Contenido
Para actualizar los filtros de una tabla dinámica basándote en el valor de una celda específica utilizando VBA en Excel, puedes seguir estos pasos:
Sub ActualizarFiltroTablaDinamica()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim filtroValor As String
' Establece la hoja de trabajo y la tabla dinámica
Set ws = ThisWorkbook.Sheets("NombreHoja") ' Cambia "NombreHoja" según corresponda
Set pt = ws.PivotTables("NombreTablaDinamica") ' Cambia "NombreTablaDinamica" según corresponda
' Especifica el campo que deseas filtrar
Set pf = pt.PivotFields("NombreCampo") ' Cambia "NombreCampo" según corresponda
' Obtén el valor para el filtro de la celda específica
filtroValor = ws.Range("A1").Value ' Cambia "A1" por la celda que contiene el valor
' Limpiar los filtros existentes en el campo
pf.ClearAllFilters
' Aplicar el nuevo filtro
If filtroValor <> "" Then
pf.CurrentPage = filtroValor
Else
pf.ClearAllFilters ' Opcional: Limpiar filtro si la celda está vacía
End If
End Sub
- Abre el Editor de VBA: Presiona `ALT` + `F11` para abrir el editor de VBA en Excel.
- Inserta un Módulo Nuevo: Haz clic derecho en «VBAProject (TuArchivo.xlsx)» y selecciona `Insertar > Módulo` para crear un nuevo módulo.
- Escribe el Código: Copia y pega el siguiente código, ajustando los nombres de la tabla dinámica, el campo que deseas filtrar, y la celda que contiene el valor del filtro:
- Ajustes Adicionales:
- Cambia `»NombreHoja»` al nombre real de la hoja de Excel que contiene la tabla dinámica.
- Cambia `»NombreTablaDinamica»` al nombre de la tabla dinámica.
- Cambia `»NombreCampo»` al nombre del campo dentro de la tabla dinámica por el que deseas filtrar.
- Cambia `»A1″` a la referencia de la celda que contiene el valor que deseas usar para el filtro.
- Ejecutar el Script: Puedes ejecutar este macro haciendo clic en `F5` dentro del editor VBA, o asignándolo a un botón o evento en la hoja de Excel.
Este script ajusta dinámicamente el filtro de un campo específico en una tabla dinámica en función del valor de una celda, permitiendo una manipulación rápida y automatizada de los datos en Excel.