Filtrar varias tablas dinámicas según el valor de varias celdas.

Estoy tratando de hacer una macro que me filtra varias tablas dinámicas de mi hoja teniendo el cuenta el valor de varias celdas. La idea es así, tengo 10 tablas dinámicas y todas comparten el filtro fecha. En una celda de una columna ingreso una fecha y las celdas siguientes hacen una búsqueda y me devuelven otras fechas. La idea es que al ingresar la primer fecha y se devuelvan las otras fechas, las distintas tablas se filtren según las fechas. Pongo un ejemplo:

Celda "A18" filtra "Tabla dinámica10"

Celda "A17" filtra "Tabla dinámica9"

Celda "A16" filtra "Tabla dinámica8"

Celda "A15" filtra "Tabla dinámica7"

Celda "A14" filtra "Tabla dinámica6"

Celda "A13" filtra "Tabla dinámica5"

Celda "A12" filtra "Tabla dinámica4"

Celda "A8" filtra "Tabla dinámica3"

Celda "A7" filtra "Tabla dinámica2"

Celda "A6" filtra "Tabla dinámica1"

Yo ingreso el valor en A18, las otras celdas(a17, a16, a15...) me devuelven otras fechas, que aclaro están en el filtro de la tabla, no son fechas que no existan. La idea es que las tablas dinámicas se filtren por los valores de las celdas. Después de mucho logre este código:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
If Intersect(Target, Range("A18")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xPTable = Worksheets("Tabla Dinamica - Semanal-Diaria").PivotTables("Tabla dinámica10")
Set xPFile = xPTable.PivotFields("FECHA")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

Y me filtra bien la Tabla dinámica10 por la celda A18. Pero no la he podido adaptar para que me haga lo demas.. Solicito su ayuda

1 respuesta

Respuesta
2

De esta manera me funciona:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim xPTable As PivotTable
  Dim xPFile As PivotField
  Dim xStr As String
  Dim i As Long
  Dim n As Variant
  '
  Application.ScreenUpdating = False
  If Intersect(Target, Range("A18")) Is Nothing Then Exit Sub
  '
  'tabla dinam: 1  2  3   4   5   6   7   8   9  10
  n = Array("", 6, 7, 8, 12, 13, 14, 15, 16, 17, 18)
  For i = 1 To 10
    Set xPTable = Worksheets("Tabla Dinamica - Semanal-Diaria").PivotTables("Tabla dinámica" & i)
    Set xPFile = xPTable.PivotFields("FECHA")
    xStr = Format(Range("A" & n(i)).Value, "d-mmm")
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
  Next
End Sub

---

El filtro de la fecha lo realizo con el forma d-mmm, por ejemplo

14 de marzo es 14-mar

08 de marzo es 8-mar

Ese formato es el que me funciona, porque en los datos así me aparece la fecha:

Aunque en la celda A18 estoy capturando 14/03/2022, en el código lo estoy convirtiendo a:

14-mar

[Prueba y me cometas.

¡Gracias! Siempre atento dante.. la verdad no me funciono.. lo probé y trate de amoldar todo para que funcione y no.. así que en mi base de datos agregue una columna que por medio de la función Fecha. Número me devuelve el valor numérico de la fecha. y filtro por ese valor.. en mi formulario hice lo mismo y funciono. es todo un tema lograr que funcione con la fecha en su formato. siempre en formato numérico es mas simple. comento así si otro esta buscando alguna solución similar, le sirva saber que en formato numero las fechas son mas amables.. obviamente que capos como ustedes sabrán hacer lo mismo con los formatos fechas sin modificar.. saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas