Contenido
Para vincular múltiples tablas dinámicas a un solo slicer utilizando VBA en Excel, debes seguir estos pasos:
Sub ConectarSlicer()
Dim pt As PivotTable
Dim ws As Worksheet
Dim slc As SlicerCache
' Cambia "NombreDelSlicer" por el nombre del slicer que estás utilizando.
Set slc = ThisWorkbook.SlicerCaches("NombreDelSlicer")
' Recorre todas las tablas dinámicas en el libro
For Each ws In ThisWorkbook.Worksheets
For Each pt In ws.PivotTables
' Asegúrate de que la tabla dinámica está usando el mismo cache que el slicer
If pt.CacheIndex = slc.WorkbookConnection.Refreshable Then
On Error Resume Next
' Agrega la tabla dinámica al slicer
slc.PivotTables.AddPivotTable (pt)
On Error GoTo 0
End If
Next pt
Next ws
MsgBox "Todas las tablas dinámicas ahora están conectadas al slicer."
End Sub
- Asegúrate de que las tablas dinámicas están basadas en el mismo origen de datos: Todas las tablas dinámicas que deseas controlar con un solo slicer deben estar vinculadas al mismo modelo de datos o al mismo rango/origen de datos en Excel.
- Inserta un Slicer: Primero, inserta un slicer en una de las tablas dinámicas. Puedes hacerlo seleccionando la tabla dinámica, y luego en la pestaña Analizar (o Opciones, dependiendo de tu versión de Excel), selecciona Insertar segmentación de datos (Slicer) y elige el campo según el cual deseas filtrar.
- Usa VBA para conectarlas: Usa un script de VBA para vincular el slicer a todas las tablas dinámicas. Aquí te dejo un ejemplo de cómo hacerlo:
- Ejecuta el script: Abre el Editor de Visual Basic en Excel (puedes hacerlo presionando `ALT + F11`), luego inserta un nuevo módulo (`Insertar > Módulo`) y pega el código anterior. Asegúrate de reemplazar `»NombreDelSlicer»` con el nombre real de tu slicer.
- Corre el macro: Vuelve a Excel y ejecuta el macro que acabas de crear (`Alt + F8` para abrir la ventana de macros, selecciona `ConectarSlicer` y ejecuta).
Este procedimiento debería vincular todas las tablas dinámicas que comparten el mismo origen de datos al slicer especificado. Asegúrate de guardar una copia de tu archivo antes de ejecutar macros para evitar cualquier pérdida de datos.