sábado, 21 de enero de 2012

Tablas dinámicas

Las tablas dinámicas son muy útiles para estructurar datos que se presentan en bruto, resumirlos y crear informes. Normalmente, una tabla de datos de Excel no puede cambiar de estructura. Podemos ordenar los datos, filtrarlos, añadir subtotales, pero la estructura en filas y columnas es inalterable. Uno de los objetivos de las tablas dinámicas es la posibilidad de alterar esa estructura y a la vez resumir datos.
El siguiente procedimiento establece las bases principales de utilización de VBA para crear una tabla dinámica. El código que utilizamos puede resultar un poco confuso.
A continuación explico brevemente algunos objetos relevantes:

PivotCaches:  Representa todas la memoria caché de tabla dinámica del libro especificado.
PivotTable:  Colección de todos los objetos de la hoja de cálculo especificada.
PivotFields: Representa un solo campo de tabla dinámica.
DisplayFieldCaptions: Controla si se muestran o no los botones de filtro y los títulos PivotField para filas y columnas en la cuadrícula.

Sub PivotTable()
Dim PTCache As PivotCache
Dim PT As PivotTable

Set PTCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=Range("A1").CurrentRegion)

Set PT = ActiveSheet.PivotTables.Add(PivotCache:=PTCache, _
TableDestination:=Range("F1"), TableName:="Ventas")

With PT
    .PivotFields("Zona").Orientation = xlPageField
    .PivotFields("Mes").Orientation = xlColumnField
    .PivotFields("Nombre").Orientation = xlRowField
    .PivotFields("Ventas").Orientation = xlDataField
    .DisplayFieldCaptions = False

End With
End Sub

La última sección del código se añade los campos a la tabla dinámica y se especifica su localización dentro de ella.

El código también podría ser más general si se utiliza índices en lugar de cadenas literales para las colecciones PivotFields. De esta forma, si el usuario cambia los encabezados de las columnas, el código seguirá funcionando.



No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.