¿Cómo crear una tabla dinámica usando VBA?

Crear una tabla dinámica utilizando VBA en Excel puede ser un proceso muy útil para automatizar tareas repetitivas de análisis de datos. A continuación, te proporcionaré un ejemplo básico de cómo hacerlo. Supongamos que tienes datos en una hoja de Excel que quisieras resumir en una tabla dinámica.

Paso 1: Preparar los Datos

Asegúrate de que tus datos estén organizados en formato de tabla en Excel. La primera fila debe contener los encabezados y las siguientes filas deben contener los datos.

Paso 2: Abrir el Editor de VBA

  • Abre Excel y presiona `ALT + F11` para abrir el Editor de VBA.
  • En el Editor de VBA, inserta un nuevo módulo haciendo clic en `Insertar > Módulo`.

Paso 3: Escribir el Código VBA

Copia y pega el siguiente código en el módulo que creaste. Asegúrate de ajustar los nombres de las hojas y los rangos de acuerdo con tu archivo:

Sub CrearTablaDinamica()
    Dim wsDatos As Worksheet
    Dim wsTablaDinamica As Worksheet
    Dim rangoDatos As Range
    Dim tablaDinamicaCache As PivotCache
    Dim tablaDinamica As PivotTable
    Dim ultimoFila As Long
    Dim ultimoColumna As Long

    ' Establece las hojas donde están los datos y donde estará la tabla dinámica
    Set wsDatos = ThisWorkbook.Worksheets("Datos")
    Set wsTablaDinamica = ThisWorkbook.Worksheets.Add
    wsTablaDinamica.Name = "TablaDinamica"

    ' Define el rango de los datos
    ultimoFila = wsDatos.Cells(Rows.Count, 1).End(xlUp).Row
    ultimoColumna = wsDatos.Cells(1, Columns.Count).End(xlToLeft).Column
    Set rangoDatos = wsDatos.Range(wsDatos.Cells(1, 1), wsDatos.Cells(ultimoFila, ultimoColumna))

    ' Crear el cache de la tabla dinámica
    Set tablaDinamicaCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rangoDatos)

    ' Crear la tabla dinámica
    Set tablaDinamica = tablaDinamicaCache.CreatePivotTable(TableDestination:=wsTablaDinamica.Cells(1, 1), TableName:="MiTablaDinamica")

    ' Configurar los campos de la tabla dinámica (ajusta de acuerdo a tus datos)
    With tablaDinamica
        ' Agregar un campo de fila
        .PivotFields("NombreDelCampo1").Orientation = xlRowField
        .PivotFields("NombreDelCampo1").Position = 1
        
        ' Agregar un campo de valores
        .PivotFields("NombreDelCampo2").Orientation = xlDataField
        .PivotFields("NombreDelCampo2").Function = xlSum
    End With

    ' Opcional: Formatear la tabla dinámica
    tablaDinamica.TableStyle2 = "PivotStyleMedium9"

    MsgBox "Tabla dinámica creada exitosamente"
End Sub

Nota:

  • wsDatos: Cambia `»Datos»` al nombre de tu hoja de cálculo que contiene los datos originales.
  • NombreDelCampo1 y NombreDelCampo2: Cambia estos por los nombres reales de las columnas en tus datos que desees utilizar en la tabla dinámica.
  • TableStyleMedium9: Puedes cambiar este código para usar un estilo diferente para la tabla dinámica.

Paso 4: Ejecutar el Código

  • Regresa a Excel y guarda el libro como un archivo habilitado para macros (`.xlsm`).
  • Ejecuta la macro presionando `ALT + F8`, seleccionando `CrearTablaDinamica` y luego haciendo clic en `Ejecutar`.

Este script es un ejemplo básico. Las tablas dinámicas en VBA pueden ser configuradas de muchas maneras distintas dependiendo de tus necesidades, así que siéntete libre de modificar el código para adaptarlo a tus propósitos específicos.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario