Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Tabla dinámica en VBA Coeficiente Intelectual

| 2 comentarios

El coeficiente intelectual (IC) es una puntuación, resultado de algunos de los test estandarizados diseñados para valorar la inteligencia.

Se denomina superdotados a aquellos que poseen un coeficiente intelectual igual o mayor que 130 y se encuentran por encima del 98% de la población.

Se denominan genios a aquellos que poseen un cociente intelectual igual o mayor que 160 y representa el 0,0023% de la población.

Las pruebas de coeficiente intelectual tienen cierta polémica pues refieren que los resultados no reflejan todas las inteligencias que una persona puede tener, por ejemplo personas que tienen grandes capacidades lingüísticas pero poco razonamiento matemática. Aún así esta es una de las formas más conocidas para medir la inteligencia humana.

En este ejemplo, se ha tomado una base de datos que contiene resultados de coeficiente intelectual de personas de diferentes géneros, regiones, edades, etc. La meta del cruze de resultados en la tabla dinámica es descubrir tendencias  de CI. Por ejemplo: cual de los dos género suele tener coeficiente intelectual más alto?, que edades tienen el coeficiente intelectual más alto? que regiones parecen tener personas con coeficientes más alto o bajos? etc.

Para esto vamos a usar una de las herramientas más fuertes que tienen excel, es decir las tablas dinámicas. Las tablas dinámicas. Las tablas dinámicas ( pivot tables) son una herramienta para análisis de bases de datos. Se encargan de resumir y ordenar la información contenida en la base de datos. A veces poder observar la información más relevante se torna muy dificil cuando se tienen bases de datos grandes por tanto al usar una tabla dinámica se nos permite visualizar la información de manera más ordenada permitiendonos darle sentido a los resultados.

EL código que usamos fue el siguiente:

--------------------

Sub MiTablaDinamica()
Dim WSD1 As Worksheet
Dim WSD2 As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PRange As Range
Dim FinalRow As Long

------------------Se define la hoja de trabajo
Set WSD1 = Worksheets("Hoja2")

 

--------------------Borrar las tablas dinamicas que se encuentran en la hoja antes de realizar la macros
For Each PT In WSD1.PivotTables
PT.TableRange2.Clear
Next PT

Set WSD2 = Worksheets("Hoja1")
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow , 8)

Sheets("Hoja1").Select
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("Hoja2").Range("A1"), TableName:="PivotTable3")
PT.Format xlReport4

-------------------------Actualización automática
PT.ManualUpdate = True

 

-----------------Defino campos : Zonas correspondientes a las filas, columnas, páginas (filtros) y zona de valores

-----------------Para luego:  Calcular la tabla dinámica

PT.ManualUpdate = False
'PT.ManualUpdate = True
Sheets("Hoja3").Select
End Sub

Con el código que hemos usado hemos podido pedirle a la macros que tome la base de datos y utilice la información de manera que se pueda mostrar en una tabla dinámica, ordenada. En sí me tomé la libertad de usar los datos más relevantes de manera que al cruzarlos la información tenga sentido y sea fácil de digerir. Algo que agregué y que me pareció importante fue:

Sheets("Hoja2").Select
With ActiveSheet.PivotTables("PivotTable3").PivotFields("Suma de CI")
.Caption = "Promedio de CI"
.Function = xlAverage
End With

Esta parte del código me facilita que pueda vislumbrar, en los campos de la tabla dinámica, el coeficiente intelectual en promedio, en vez de la "suma" que normalmente se encuentra activada por default. Así estoy obteniendo el promedio de coeficiente intelectual por género y edad respectiva. Lo cual también puede ser filtrado por la región a la que pertenece la persona.

Aquí adjunto el ejemplo en Excel.

Tabla dinamica en VBA Coeficiente Intelectual

 

 

Milagros Aguilar Salvador

2 comentarios

  1. Interesante, casi todas las tablas dinámicas tienen la misma forma. Sólo hay que tener en cuenta que ´funciones´ se usarán, como en este caso se usa promedio.

  2. Interesante ejemplo, quisiera saber para que sirve el "Cache"

    Sheets(“Hoja1″).Select
    Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

    espero su ayuda

Deja una respuesta

Los campos requeridos estan marcados con *.