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

Crear una tabla dinámica desde varios rangos usando VBA puede ser un poco más complejo que hacerlo desde un solo rango, pero se puede lograr usando varios pasos. A continuación te muestro un ejemplo básico para ayudarte a comenzar:

  • Consolidar los Rangos: Asegúrate de que los rangos de datos tengan la misma estructura (mismas columnas).
  • Crear un Rango de Consolidación: Puedes usar un rango de consolidación para unir los diferentes conjuntos de datos en una tabla dinámica.

Aquí tienes un ejemplo de cómo podrías hacerlo:

Sub CrearTablaDinamicaDesdeVariosRangos()

    Dim ws As Worksheet
    Dim rng1 As Range, rng2 As Range
    Dim ptCache As PivotCache
    Dim pt As PivotTable
    Dim datos1 As String, datos2 As String
    Dim lastRow1 As Long, lastRow2 As Long
    
    ' Definir las hojas de cálculo
    Set ws = ThisWorkbook.Sheets("HojaResultado")
    
    ' Obtener los rangos de datos (asegúrate de cambiar los nombres de hoja y rangos según tus necesidades)
    With ThisWorkbook.Sheets("Datos1")
        lastRow1 = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng1 = .Range("A1:C" & lastRow1) ' Cambia A1:C por el rango correcto
    End With
    
    With ThisWorkbook.Sheets("Datos2")
        lastRow2 = .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng2 = .Range("A1:C" & lastRow2) ' Cambia A1:C por el rango correcto
    End With
    
    ' Crear un arreglo de rangos para consolidar
    datos1 = rng1.Address(True, True, xlR1C1, True) & ";" & rng2.Address(True, True, xlR1C1, True)
    
    ' Crear la caché de la tabla dinámica
    Set ptCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, _
                                                  SourceData:=Array(datos1))
    
    ' Crear la tabla dinámica
    Set pt = ptCache.CreatePivotTable(TableDestination:=ws.Range("A1"), TableName:="TablaDinamicaVariosRangos")
    
    ' Configuración ejemplo de la tabla dinámica
    With pt
        ' Aquí estableces campos en filas, columnas, filtros, etc.
        '.PivotFields("Campo1").Orientation = xlRowField
        '.PivotFields("Campo2").Orientation = xlColumnField
        '.AddDataField .PivotFields("Campo3"), "Suma de Campo3", xlSum
    End With
    
    MsgBox "Tabla dinámica creada con éxito!"

End Sub

Notas Importantes:

  • Asegúrate de modificar los nombres de las hojas de cálculo y los rangos para que se adapten a tu caso.
  • Este ejemplo está basado en la suposición de que tus datos están en dos hojas llamadas «Datos1» y «Datos2» y que tienen columnas A a C (cambia esto según tus datos).
  • Este script crea una tabla dinámica basada en la consolidación múltiple, lo que significa que tiene ciertas limitaciones en cuanto a la personalización de campos en comparación con tablas dinámicas estándar.

Es importante que pruebes el script y realices ajustes según la estructura y requerimientos de tus datos.

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