¿Cómo filtrar una tabla dinámica basada en datos externos con VBA?

Para filtrar una tabla dinámica en Excel usando VBA con datos externos, puedes seguir estos pasos. Supongamos que tienes una tabla dinámica y deseas filtrar uno de sus campos utilizando un valor que obtendrás de una celda específica en otra hoja o libro. Aquí te muestro un ejemplo básico:

  • Vincular VBA a Excel:

Asegúrate de tener acceso al Editor de VBA presionando `ALT + F11` en Excel.

  • Identificar Tabla Dinámica y Campo:

Determina el nombre de tu tabla dinámica y el campo que deseas filtrar. Puedes encontrar esta información seleccionando la tabla dinámica y revisando las Herramientas de Tabla Dinámica en la barra de herramientas de Excel.

  • Código VBA:

Usa el siguiente ejemplo de código como punto de partida. Este se conectará a tu tabla dinámica y aplicará filtro usando un valor de una celda de referencia.

Sub FiltrarTablaDinamica()
    ' Define variables
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim dataSheet As Worksheet
    Dim filterValue As String

    ' Establece el libro y la hoja donde está la tabla dinámica
    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Hoja1") ' Cambia "Hoja1" al nombre de tu hoja
    
    ' Establece la hoja de donde provendrá el valor del filtro
    Set dataSheet = wb.Sheets("DatosExternos") ' Cambia "DatosExternos" al nombre de la hoja correcta
    filterValue = dataSheet.Range("A1").Value ' Cambia "A1" al rango donde está tu dato externo

    ' Establece la tabla dinámica
    Set pt = ws.PivotTables("TablaDinamica1") ' Cambia "TablaDinamica1" al nombre de tu tabla dinámica

    ' Limpiar filtros existentes
    pt.ClearAllFilters

    ' Aplicar filtro al campo - cambia "Campo1" al nombre del campo que deseas filtrar
    With pt.PivotFields("Campo1")
        .ClearAllFilters
        .CurrentPage = filterValue
    End With
    
    MsgBox "Filtro aplicado con éxito usando el valor: " & filterValue

End Sub

Notas importantes:

  • Reemplaza los nombres de hoja («Hoja1», «DatosExternos») y los nombres de la tabla dinámica y campo («TablaDinamica1», «Campo1») con los que correspondan en tu caso.
  • Asegúrate de que el valor en la celda de referencia (`»A1″` en el ejemplo) coincide exactamente con un elemento del campo que intentas filtrar en la tabla dinámica.
  • Puedes añadir lógica adicional para manejar casos como que el valor no exista, errores, etc.

Este script de VBA te proporciona una forma automatizada de aplicar filtros a tus tablas dinámicas en función de datos externos dentro de tu archivo de Excel.

Conoce nuestros servicios

Conoce nuestra tienda

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Deja un comentario