¿Cómo crear una tabla dinámica con múltiples fuentes de datos usando VBA?

Crear una tabla dinámica a partir de múltiples fuentes de datos usando VBA en Excel puede ser un proceso algo complejo, pero es factible. Generalmente, necesitarás primero combinar los datos de las diferentes fuentes en un solo conjunto de datos antes de crear la tabla dinámica. A continuación te proporciono una guía paso a paso sobre cómo podrías hacerlo:

Paso 1: Consolidar los Datos

Antes de crear una tabla dinámica, es recomendable consolidar los datos de las diferentes fuentes en una sola hoja de cálculo. Este paso se puede hacer manualmente o mediante VBA, dependiendo de cómo estén dispuestas tus fuentes de datos.

Ejemplo de Código para Consolidar Datos

Aquí tienes un ejemplo para combinar datos desde múltiples hojas de un libro en una hoja llamada «Consolidado»:

Sub ConsolidarDatos()
    Dim ws As Worksheet
    Dim destino As Worksheet
    Dim ultimaFila As Long
    Dim filaDestino As Long
    
    ' Crear hoja de destino
    Set destino = ThisWorkbook.Sheets.Add
    destino.Name = "Consolidado"
    
    ' Inicializa fila destino
    filaDestino = 1
    
    ' Itera sobre cada hoja de cálculo
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Consolidado" Then
            ultimaFila = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
            ws.Range("A1:A" & ultimaFila).EntireRow.Copy
            destino.Cells(filaDestino, 1).PasteSpecial Paste:=xlPasteValues
            filaDestino = destino.Cells(destino.Rows.Count, 1).End(xlUp).Row + 1
        End If
    Next ws
    
    Application.CutCopyMode = False
    MsgBox "Datos consolidados en la hoja 'Consolidado'."
End Sub

Paso 2: Crear la Tabla Dinámica

Una vez que tus datos están en una sola hoja de cálculo, ahora puedes proceder a crear la tabla dinámica. Aquí te dejo un ejemplo de cómo hacerlo utilizando VBA:

Sub CrearTablaDinamica()
    Dim ws As Worksheet
    Dim rangoDatos As Range
    Dim ptCache As PivotCache
    Dim ptTable As PivotTable
    Dim ultimaFila As Long
    Dim ultimaColumna As Long
    
    ' Define la hoja de trabajo
    Set ws = ThisWorkbook.Sheets("Consolidado")
    
    ' Define el rango de datos
    ultimaFila = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    ultimaColumna = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    Set rangoDatos = ws.Range(ws.Cells(1, 1), ws.Cells(ultimaFila, ultimaColumna))
    
    ' Eliminar cualquier tabla dinámica existente en la hoja
    On Error Resume Next
    ws.PivotTables("TablaDinámica1").TableRange2.Clear
    On Error GoTo 0
    
    ' Crear el caché de la tabla dinámica
    Set ptCache = ThisWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=rangoDatos)
    
    ' Crear la tabla dinámica
    Set ptTable = ws.PivotTables.Add( _
        PivotCache:=ptCache, _
        TableDestination:=ws.Cells(ultimaFila + 2, 1), _
        TableName:="TablaDinámica1")
    
    ' Configurar campos de la tabla dinámica (ejemplo)
    With ptTable
        .PivotFields("Campo1").Orientation = xlRowField
        .PivotFields("Campo2").Orientation = xlColumnField
        .PivotFields("Campo3").Orientation = xlDataField
    End With
    
    MsgBox "Tabla dinámica creada correctamente."
End Sub

Nota

  • Antes de ejecutar el código, asegúrate de ajustar los nombres de los campos (como `»Campo1″`, `»Campo2″` y `»Campo3″`) según tus requerimientos específicos.
  • Puedes personalizar el código para que se ajuste a tus necesidades específicas de análisis o estructura de datos.
  • Asegúrate de tener habilitadas las macros en tu archivo de Excel antes de ejecutar estos scripts.

Con estos pasos, deberías poder crear una tabla dinámica a partir de múltiples fuentes de datos en Excel utilizando VBA.

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