Contenido
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.