• No se han encontrado resultados

Coeficiente V de Cramér y tamaño del efecto

Fase 2.- Hoja de cálculo

Esta fase consta de tres etapas:

I. Importación de datos de Access. Resultado: una docena de ficheros.

II. Agrupación y recuento de datos en cada fichero por edad y por cuantía. Resultado: dos docenas de ficheros, una por criterio de agrupación.

III. Suma de los totales de cada uno de los 12 ficheros por año en un único fichero que servirá de base para realizar los contrastes estadísticos. Resultado: dos ficheros, uno por criterio de agrupación.

Etapa I.

En esta etapa se ha creado un conjunto intermedio de 12 ficheros Excel (libros de hojas de cálculo), llamados MCVL2010PRESTAC#31. Se han creado a partir del primero que ha servido de plantilla y en el que se crearon las 15 hojas de los ejercicios 1996 a 2010. En cada uno de ellos se ha copiado el mismo código de VBA para importar los datos desde las consultas creadas en Access, modificando manualmente el código en cada uno de ellos para adaptarse al distinto nombre del fichero.32 Se ha optado por importar los datos y eliminar la

31 El símbolo # corresponde al número de sub-fichero (de 1 a 12) en el que está dividida la muestra de cotizantes Ficheros MCVL

Importación como tablas: MCVL2010PRESTAC.TXT MCVL2010DIVISION.TXT MCVL2010PERSONAL.TXT Creación cabeceras campos. Tablas auxiliares.

MCVL2010PRESTAC.accdb

Creación consultas: Filtros Macro CrearConsultas() por años y sub-fichero

vinculación con la fuente de los mismos, con el fin de liberar la memoria del equipo que tenga que procesar la información. Dado el carácter estable de los datos de la MCVL no tiene sentido que se establezca esa vinculación.

El código VBA33 empleado desde Excel para importar los datos de cada consulta (años 1996 a 2010) para cada fichero es el siguiente34:

Código VBA 2.- Sub ImportarDatos. Importa consultas Access desde fichero MCVL2010PRESTAC# por años

Sub ImportarDatos()

‘Declaración de variables

Dim hoja As String Dim tabla As String

‘Inicio del bucle para importar las 15 consultas de los años 1996 a 2010 ‘por cada sub-fichero

For I = 1996 To 2010 hoja = I

tabla = “ConsultaFicheroPensionistas_#_” & hoja Sheets(hoja).Select

‘Importa la consulta “tabla” como tabla de Excel provisional sin ‘vincular con el origen

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _ “OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password=””””;User ID=Admin;Data Source=C:\MCVL\MCVL2010PRESTAC\MCVL2010PRESTA” _

, _

“C_DIV.accdb;Mode=Share Deny Write;Extended Properties=””””;Jet OLEDB:System database=””””;Jet OLEDB:Registry Path=””””;Jet OLEDB:Database Pas” _

, _

“sword=””””;Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Tra” _

, _

“nsactions=1;Jet OLEDB:New Database Password=””””;Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB” _

, _

“:Don’t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex” _

, “ Data=False;Jet OLEDB:Bypass UserInfo Validation=False”), Destination:= _ Range(“$A$1”)).QueryTable .CommandType = xlCmdTable .CommandText = Array(tabla) .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0

33 En alguna ocasión, los códigos recogidos en este trabajo se han generado a partir de Macros. Se ha modificado la macro añadiendo manualmente líneas de código para mejorarla y realizar aquellos procesos que no pueden generarse con el grabador de macros, pero no se ha depurado del todo el código “basura” generado, por lo que la extensión del código podría ser mayor que la necesaria.

34 En estas páginas, en el código se ha sustituido el número de fichero por #, pues cada fichero está adaptado al correspondiente sub-fichero de la MCVL 2010. La ruta de almacenamiento del fichero Access es C:\MCVL\MCVL2010PRESTAC, por lo que cada usuario debería adaptar el código a la ubicación real en su

Código VBA 2.- Sub ImportarDatos. Importa consultas Access desde fichero MCVL2010PRESTAC# por años

.PreserveColumnInfo = True .SourceDataFile = _

“C:\MCVL\MCVL2010PRESTAC\MCVL2010PRESTAC_DIV.accdb”

.ListObject.DisplayName = “Tabla_MCVL2010PRESTAC_#_” & hoja .Refresh BackgroundQuery:=False

End With

‘Desactiva la tabla provisional creada

ActiveSheet.ListObjects(“Tabla_MCVL2010PRESTAC_#_” & hoja).Unlist Next I

‘Fin del bucle

End Sub

Tras ejecutar el código en cada uno de los 12 ficheros, los datos de las prestaciones de la MCVL, ordenados por el identificador del pensionista, se han distribuido en 15 hojas correspondientes a los años 1996 hasta 2010.

Etapa II.

Para preparar y agrupar los datos de esos 12 ficheros, se ha creado un par de ficheros auxiliares, uno para la distribución por edad llamado MCVL2010PRESTAC_AGR.xlsm y otro para la distribución por cuantías llamado MCVL2010PRESTAC_CUANTIA.xlsm. En dichos ficheros se ha creado una hoja de plantilla de totales, “Total1996”, con el mismo formato que el que aparece en el Informe Estadístico del INSS. Ambos contienen cuatro módulos con subrutinas (macros) que van a ejecutar las órdenes para realizar las siguientes tareas:

- 1ª. Crear un fichero MCVL2010PRESTAC#_AGR (agrupación por edad) o MCVL2010PRESTAC#_CUANTIA (agrupación por cuantía) a partir del fichero correspondiente MCVL2010PRESTAC#.xlsm generado anteriormente con la importación de las consultas. Se realiza mediante los procedimientos “CopiaMCVLPRESTACResto” (edad) y “CopiaMCVLPRESTAC_CUANTIAResto” (cuantías).

- 2ª. Añadir columnas a cada hoja con una fórmula que calcule la edad aproximada de cada pensionista a 31 de diciembre de cada año. Se habla de edad aproximada, ya que la MCVL no recoge el día de nacimiento, sólo el mes y el año, por lo que para todos los registros se ha puesto como día de nacimiento el día 15 de cada mes. Como no se calcula la edad actuarial a 31 de diciembre, a efectos de determinar la edad en esa fecha no tiene efectos, pues se toma la parte entera para calcularla. Se ejecuta mediante la subrutina “InsertarColumnasEdad”. No se ejecuta para el caso de cuantías, como es obvio.

- 3ª. Copiar la plantilla de hoja de totales, “Total1996” desde el fichero MCVL2010PRESTAC_AGR o MCVL2010PRESTAC_CUANTIA a cada uno de los doce ficheros MCVL2010PRESTAC#_AGR o MCVL2010PRESTAC#_CUANTIA en los que se hará a continuación la agrupación y recuento de las prestaciones en esa hoja de totales. Crear a partir de la hoja plantilla de totales “Total1996” recién copiada, las hojas de totales de los ejercicios 1997 a 2010 en los 12 ficheros. Se consigue mediante las subrutinas “CopiaMCVLPRESTACResto”, “CopiaMCVLPRESTAC_CUANTIAResto” que llamna a la macro “PrestacionesCrearHojasTotales”.

la tabla recogida en MESS (2015), págs. 125-127, pues no se incorporan a las estadísticas anuales del INSS. Después se eliminan los registros en los que, a pesar de tener un valor que significa el alta de la pensión en el campo “SITUACIÓN”, la “FECHA- FALLECIMIENTO” es igual o anterior a diciembre de cada año35. Por último, se eliminan del recuento los registros en donde se duplique el mismo código de pensionista y mismo código de pensión (misma pensión) con el fin de no contabilizar dos veces la misma prestación. Los registros eliminados del recuento, se han copiado en hojas aparte para su valoración.36 Total registros eliminados en esta segunda fase: 33.097 (24.410 registros por código distinto al alta; 1.321 registros con código de alta pero con fecha de fallecimiento anterior o igual al 31 de diciembre del año del dato; 7.366 registros con el par IDENTIFICADOR-PERSONA FÍSICA y PSIK, o identificación de pensión, iguales a un registro anterior). Este filtro se ejecuta dentro del procedimiento “Totalizar”, tanto en la distribución por edad como por cuantía.

Tabla 2.A59.- Claves de situación de alta o baja de las prestaciones. MCVL 2010

CLAVE SITUACIÓN

000-002-003 PRESTACION EN ALTA 100 BAJA POR OTRAS CAUSAS 101 EN BAJA POR FALLECIMIENTO 102 EN BAJA POR SANCION

103 BAJA POR OPCION POR OTRA PRESTACION 104 BAJA POR ABSORCION

105 BAJA POR NUPCIAS O PAREJA DE HECHO 106 BAJA POR CONVIVENCIA MARITAL

107 BAJA POR OPCION INDEMN. TANTO ALZADO 108 EN BAJA POR CURACION

109 BAJA POR DECLARAC. INVAL. PERMANENTE 110 BAJA POR CONCESION PENSION JUBILACION 111 BAJA POR PL MAXIMO AV,AR,YA,YE,LI,YP 112 BAJA POR REALIZACION DE TRABAJOS 113 BAJA POR PLAZO MAXIMO

114 BAJA POR RESOLUCION JUDICIAL 115 BAJA POR FALLECIM. SIN SABER FECHA 116 BAJA POR DUPLICIDAD DE EXPEDIENTE 117 BAJA POR RECONVERSION MINERIA(ART.22) 118 BAJA POR ADOPCION HUERF. O TITULAR FF 119 BAJA POR PASAR A EXPEDIEN. DEFINITIVO 120 BAJA POR UNIFICACION DE PRESTACIONES 121 BAJA POR DENEGACION INVALIDEZ PERMAN. 122 BAJA POR RECONO. JUBIL. ORDIN. O ANTIC. 126 EN BAJA POR AGOT. 2 AÑOS PREST.TEMPORAL 130 BAJA POR NO REUNIR REQUISITOS LEGALES 131 BAJA POR SUPERAR RECURSOS

35 Se considera que todos los fallecidos en el último mes del año no estarán recogidos en las estadísticas de pensiones publicadas en la memoria anual del INSS.

36 Entre los registros eliminados, se da el caso de registros con código de baja en el campo SITUACIÓN en ejercicios anteriores a 2010, mientras que la misma prestación figura en alta en el 2010. Como curiosidad, hay un registro eliminado en que el campo FECHA-SITUACION tiene un año distinto al campo “ANYO-DEL-DATO”, dándose el caso de que para el mismo identificador de pensionista existe un registro de prestación con valores duplicados en todos los campos, además de existir dos registros contradictorios de la prestación con la clave “000” como activa cuando la misma prestación en el mismo año tiene otro registro con clave “199”, manteniendo el resto de valores de los campos iguales. No se ha querido aplicar este filtro en Access, pues se quiere conservar a todo ese grupo de registros para determinar, a partir de la fecha de la situación, cuántos meses ha estado de alta la prestación antes de pasar a situación de baja o suspensión y utilizarlo en proyecciones

Tabla 2.A59.- Claves de situación de alta o baja de las prestaciones. MCVL 2010

CLAVE SITUACIÓN

132 BAJA POR PERDIDA RESIDENCIA LEGAL ESPAÑA 133 BAJA POR PERDIDA GRADO DE MINUSVALIA 134 BAJA POR INCOMPATIBI.OTRA PRESTACION 135 BAJA POR DESCENSO GRADO DE INCAPACIDAD 140 BAJA POR MIGRACION

141 BAJA POR RENUNCIA VOLUNTARIA AL DERECHO 142 EXTINC.FIJO DISCONT.NO PRESENT.INI.ACTI 143 BAJA DESPLAZAMIENTO PAISES COM.ECON.EUR 144 BAJA PARTICIPACION CURSO SUBVENCIONADO 145 BAJA POR REVOCACION ACUERDO ADMINISTRAT 146 BAJA POR MATRIMONIO

147 BAJA FICTICIA TRASLADO ANTES DE CARGA B 148 BAJA CAUTELAR REGULARIZADA

149 BAJA POR VENCIMIENTO PRESTACION 150 BAJA POR PERDIDA APTITUD LEGAL 151 BAJA POR TRASLADO

152 BAJA JUBILACION PARCIAL POR REC. INCAPA 153 BAJA POR INGRESOS SUPERIORES AL SMI 154 BAJA JUB.PARC. EXTINC. CONTRATO TRABAJO 155 BAJA EXTINCION POR TRANSCURSO DEL PLAZO 199 BAJA POR CAUSA DESCONOCIDA

200 o superior PRESTACION SUSPENDIDA, PENDIENTE DE PROCESO O ANULADA Fuente. MESS (2015), pp. 125-126.

Tabla 2.A60.- Tabla resumen de registros eliminados en la fase 2 Año SITUACIÓN ≠ alta SITUACIÓN = Alta

Fallecidos Duplicados

TOTAL Eliminados

Baja por fallecimiento. Pensión activa inicio 2010

1996 118 0 26 144 11 1997 274 0 117 391 26 1998 350 0 178 528 21 1999 470 0 253 723 42 2000 472 0 247 719 22 2001 504 0 276 780 22 2002 565 0 307 872 24 2003 602 0 347 949 22 2004 584 1 348 933 22 2005 610 1 922 1.533 45 2006 547 1 450 998 29 2007 663 1 543 1.207 23 2008 1.440 1 1.320 2.761 32 2009 1.063 3 923 1.989 19 2010 16.148 1.313 1.109 18.570 12.503 TOTAL 24.410 1.321 7.366 33.097 12.863

Fuente: elaboración propia a partir de los datos de la MCVL

- 5ª.- Agrupación de los datos de la muestra de cada uno de los 12 ficheros. Para la distribución por edad, se efectúa un recuento de prestaciones por tipo de pensión, género y cohorte de edad; se calcula la pensión media por cohorte, edad y pensión, y se obtiene la

recuento de prestaciones por tipo de pensión y cohorte de cuantía. Se completa esta agrupación con la ejecución del procedimiento “Totalizar”.

Los primeros resultados de esta etapa de agrupación son doce ficheros para el caso de la distribución por edad: MCVL2010PRESTAC#_AGR; y doce ficheros para la distribución por cuantías: MCVL2010PRESTAC#_CUANTIA, con # tomando valores de 1 a 12. Cada uno de los 12 sub-ficheros tiene una hoja de totales por año. Se recuerda que la subdivisión del fichero de prestaciones en 12 ficheros obedece a vincular en el futuro más fácilmente los ficheros de prestaciones con los de cotizaciones.

Código VBA 3.- CopiaMCVLPRESTACResto. Ficheros de datos agrupados, copia totales y ejecuta otras macros. Edad

Sub CopiaMCVLPRESTACResto()

‘1. Crea ficheros MCVL2010PRESTAC#_AGR para agrupar los datos a partir de los ‘ficheros de datos importados MCVL2010PRESTAC#

‘2. Ordena ejecutar el procedimiento para insertar la columna de edad en cada ‘hoja (año) de cada uno de los 12 ficheros

‘3. Copia la hoja plantilla de totales “Total 1996” en los 12 ficheros. ‘Previamente, la hoja “Total1996” fue creada con el mismo formato que el ‘del Informe Estadístico del INSS.

‘4. Ejecuta la subrutina “PrestacionesCrearHojasTotales

‘5. Ejecuta la subrutina “Totalizar”

‘6. Guarda cada uno de los 12 ficheros, tras incorporar los datos totalizados.

‘7. Guarda el fichero plantilla ‘*********************************

‘Elimina mensajes de alertas para agilizar el tiempo de ejecución

Application.DisplayAlerts = False

‘Declaración de variable

Dim k As Integer

‘Bucle para realizar lo mismo en los 12 ficheros de prestaciones

For k = 1 To 12

‘Se abre el fichero con datos importados de prestaciones MCVL2010PRESTAC#

Workbooks.Open Filename:= _

“C:\MCVL\MCVL2010PRESTAC\MCVL2010PRESTAC” & k & “.xlsm”

‘Se guarda el fichero con datos importados como MCVL2010PRESTAC#_AGR

ActiveWorkbook.SaveAs Filename:= _

“C:\MCVL\MCVL2010PRESTAC\MCVL2010PRESTAC” & k & “_AGR.xlsm” _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

‘Ejecutar Macro cálculo Edad, columnas insertadas

Call InsertarColumnasEdad

‘Copia plantilla Total1996 para ejecutar macro de copia de hojas de totales

Windows(“MCVL2010PRESTAC_AGR.xlsm”).Activate Sheets(“Total1996”).Select

Sheets(“Total1996”).Copy After:=Workbooks(“MCVL2010PRESTAC” & k & “_AGR.xlsm”). _

Código VBA 3.- CopiaMCVLPRESTACResto. Ficheros de datos agrupados, copia totales y ejecuta otras macros. Edad

Windows(“MCVL2010PRESTAC” & k & “_AGR.xlsm”).Activate Call PrestacionesCrearHojasTotales ‘Ejecutar totalizar Call Totalizar

‘Guardar y cerrar libro

ActiveWorkbook.Save ActiveWorkbook.Close Next k ‘Fin de bucle

‘Guarda fichero plantilla

ActiveWorkbook.Save End Sub

Código VBA 4.- CopiaMCVLPRESTAC_CUANTIAResto. Ficheros de datos agrupados, copia totales y ejecuta otras macros. Cuantía

Sub CopiaMCVLPRESTAC_CUANTIAResto()

‘1. Crea ficheros MCVL2010PRESTAC#_CUANTIA para agrupar los datos a partir de los ‘ficheros de datos importados MCVL2010PRESTAC#

‘2. Copia la hoja plantilla de totales “Total 1996” en los 12 ficheros. ‘Previamente, la hoja “Total1996” fue creada con el mismo formato que el ‘del Informe Estadístico del INSS.

‘3. Ejecuta la subrutina “PrestacionesCrearHojasTotales

‘4. Ejecuta la subrutina “Totalizar”

‘5. Guarda cada uno de los 12 ficheros, tras incorporar los datos totalizados.

‘6. Guarda el fichero plantilla ‘*********************************

‘Elimina mensajes de alertas para agilizar el tiempo de ejecución

Application.DisplayAlerts = False

‘Declaración de variable

Dim k As Integer

‘Bucle para realizar lo mismo en los 12 ficheros de prestaciones

For k = 1 To 12

‘Se abre el fichero con datos importados de prestaciones MCVL2010PRESTAC#

Workbooks.Open Filename:= _

“C:\MCVL\MCVL2010PRESTAC\MCVL2010PRESTAC” & k & “.xlsm”

‘Se guarda el fichero con datos importados como MCVL2010PRESTAC#_CUANTIA

Código VBA 4.- CopiaMCVLPRESTAC_CUANTIAResto. Ficheros de datos agrupados, copia totales y ejecuta otras macros. Cuantía

‘Copia plantilla Total1996 para ejecutar macro de copia de hojas de totales

Windows(“MCVL2010PRESTAC_CUANTIA.xlsm”).Activate Sheets(“Total1996”).Select

Sheets(“Total1996”).Copy After:=Workbooks(“MCVL2010PRESTAC” & k & “_CUANTIA.xlsm”). _

Sheets(“2010”)

Windows(“MCVL2010PRESTAC” & k & “_CUANTIA.xlsm”).Activate ‘Ejecuta PrestacionesCrearHojasTotales Call PrestacionesCrearHojasTotales ‘Ejecutar totalizar Call Totalizar

‘Guardar y cerrar libro

ActiveWorkbook.Save ActiveWorkbook.Close Next k ‘Fin de bucle

‘Guarda fichero plantilla

ActiveWorkbook.Save End Sub

Código VBA 5.- InsertarColumnasEdad. Inserta columna para almacenar la edad calculada a 31 de diciembre

Sub InsertarColumnasEdad()

‘Inserta columnas para almacenar la fórmula que calcule la edad a ‘31 de diciembre de cada año.

‘Declaración de variables auxiliares.

Dim FECHANAC As Date Dim inicioanyo As Date Dim anyo As String

‘Inicio del bucle para cada año (hoja de 1996 a 2010) crear edad ‘(número entero) a 31 de diciembre de todos los registros. ‘No es la edad actuarial.

For k = 1996 To 2010

‘Asignación de valores a las variables.

anyo = k

‘VBA requiere que las fechas se escriban en orden distinto al de uso en ‘España, primero mes y después día y año.

FINANYO = “12/31/” & anyo inicioanyo = “01/01/” & anyo

Código VBA 5.- InsertarColumnasEdad. Inserta columna para almacenar la edad calculada a 31 de diciembre

Sheets(anyo).Select

‘Selección de todas las celdas para contar el número de filas o registros ‘y almacenarlo en la variable “Filas”.

Range(“a1”).CurrentRegion.Select

Filas = Range(“a1”).CurrentRegion.Rows.Count

‘Selección de la quinta columna para insertar una columna en blanco.

Columns(“e:e”).Select

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range(“e1”).Select

‘Cabecera de la nueva columna insertada para escribir la fecha de ‘nacimiento.

ActiveCell.FormulaR1C1 = “FECHA_NAC”

‘Selección de la sexta columna para insertar una columna en blanco.

Columns(“f:f”).Select

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

‘Cabecera de la nueva columna insertada para escribir la fecha fin de ‘año.

Range(“f1”).Select

ActiveCell.FormulaR1C1 = “FECHA_FIN”

‘Selección de la séptima columna para insertar una columna en blanco.

Columns(“g:g”).Select

Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

‘Cabecera de la nueva columna insertada para escribir la edad.

Range(“g1”).Select

ActiveCell.FormulaR1C1 = “EDAD”

‘Inicio bucle para seleccionar los registros (filas) de cada hoja ‘consecutivamente y extraer los datos de fechas de los campos de ‘texto e insertarlos en las celdas, así como la función AÑO, YEAR ‘en VBA para devolver la edad a 31 de diciembre. Se empieza por la ‘segunda fila, j = 2, primera que contiene datos después de la ‘cabecera.

For j = 2 To Filas

‘Extracción fecha nacimiento y asignación a celda añadiendo el día 15 ‘al dato de mes y año de la MCVL.

FECHANAC = _

CDate(“15” & “/” & (Mid(Cells(j, 3).Value, 5, 2)) & _ “/” & Mid(Cells(j, 3).Value, 1, 4))

Cells(j, 5).Value = FECHANAC

‘Comprobación fecha fallecimiento. Si no ha fallecido, se asigna a la ‘celda de la columna FECHA_FIN el valor FINANYO, 31-12 del año en ‘curso

‘y a la celda de la columna EDAD se le asigna el valor entero que da ‘la fórmula que usa la función AÑO (YEAR en VBA) que calcula los años

Código VBA 5.- InsertarColumnasEdad. Inserta columna para almacenar la edad calculada a 31 de diciembre

If Cells(j, 4) = “000000” Then Cells(j, 6).Value = FINANYO

ElseIf Cells(j, 4) <= anyo & “12” Then Cells(j, 6) = “Fallecido A 31-12” Else: Cells(j, 6) = FINANYO

End If

If Cells(j, 6).Value = “Fallecido A 31-12” Then Cells(j, 7) = -1

Else

Cells(j, 7) = “=YEARFRAC(R[0]C[-2],R[0]C[-1])” Cells(j, 7).Value = Int(Cells(j, 7).Value) End If

Next j

‘Fin del bucle de filas (registros).

Next k

‘Selección de celdas.

Cells.Select

‘Ajuste automático del ancho de las columnas de la hoja.

Cells.EntireColumn.AutoFit

‘Anular la selección de celdas seleccionando la celda inicial inicio.

Range(“A1”).Select End Sub

Código VBA 6.- PrestacionesCrearHojasTotales. Crea hojas de totales a partir de la plantilla Total 1996

Sub PrestacionesCrearHojasTotales()

‘Selección de la hoja de plantilla

Sheets(“Total1996”).Select

‘Inicio del bucle para copiar la plantilla de totales 1997 a 2010

For I = 1996 To 2009

Sheets(“Total” & I).Copy After:=Sheets(“Total” & I) Sheets(“Total” & I & “ (2)”).Select

Sheets(“Total” & I & “ (2)”).Name = “Total” & I + 1 Next I

‘Selección de la hoja de plantilla

Sheets(“Total1996”).Select End Sub

Código VBA 7.- Totalizar. Filtro. Recuento, cálculo edad y pensión media. Edad

Sub Totalizar()

‘1. Crea hoja de datos filtrados/descartados en el recuento de manera ‘ secuencial: pensiones que no están en alta a 31 de diciembre; ‘ pensiones con fecha de fallecimiento en diciembre del año en curso; ‘ registros duplicados por contar con códigos de pensionista y de pensión ‘ iguales en el mismo ejercicio.

Código VBA 7.- Totalizar. Filtro. Recuento, cálculo edad y pensión media. Edad

‘2. Agrupa por tipo de pensión en matriz.

‘3. Asigna los valores almacenados en matriz a celdas de hojas de totales ‘de cada año.

‘Creación de la hoja “Descartes” para registros filtrados: bajas, fallecidos y ‘duplicados.

‘Declaración de la variable auxiliar para crear hoja de descartes al final.

Dim nuevahoja As Integer

Sheets.Add After:=Sheets(Sheets.Count) nuevahoja = Sheets.Count

‘Asignación de nombre a la nueva hoja.

Sheets(nuevahoja).Select

Sheets(nuevahoja).Name = “Descartes”

‘Copia de fila de cabeceras de columnas de la hoja 2010 a la de “Descartes” ‘y ajuste automático del ancho de columna.

Sheets(“2010”).Select Rows(1).Select Selection.Copy Sheets(“Descartes”).Activate Rows(1).Select ActiveSheet.Paste Cells.Select Cells.EntireColumn.AutoFit

‘Declaración de variables y dimensión de las matrices que totalicen los datos ‘para año, tipo de pensión, edad y sexo. La matriz “NumeroDatos” almacena el ‘número de pensiones. “Pension” la cuantía mensual total. “sumaedad” almacena ‘el sumatorio de las edades de todos los pensionistas por cada sexo y tipo de ‘pensión, para luego poder calcular la edad media por sexo y tipo de pensión. ‘las variables “sumaedadhombres” y “sumaedadmujeres” acumulan en cada iteración ‘la edad del pensionista según sexo que luego se almacenará en “sumaedad”.

Documento similar