Truco Excel. Actualizar los filtros de una tabla dinámica con Visual basic

Imaginad que tenéis que cambiar uno o varios filtros de todas las tablas dinámicas de una hoja y cada una de las tablas dinámicas tiene un nombre distinto o hay un número distinto de tablas dinámicas en cada hoja. Eso dificulta a la hora de crear un bucle para la modificación de filtros. Pues este truco de Excel os permitirá actualizar un filtro de una fecha (o cualquier otro) para todas las tablas dinámicas de una hoja. El código es muy sencillo y no creo necesario subiros a la web algún ejemplo:

Sub filtros()
'Macro creada por www.analisisydecision.es
Dim pt As PivotTable

For Each pt In ActiveSheet.PivotTables

With pt.PivotFields("fecha")
.PivotItems("Dec-10").Visible = False
.PivotItems("Mar-10").Visible = True
End With
Next pt

End Sub

Para cada tabla dinámica (pivot table) actualiza el campo fecha, quita diciembre de 2010 y pone marzo de 2010. Es importante destacar que el filtro emplea fechas en lengua inglesa aunque vosotros en la tabla dinámica la veáis en lengua española. Esto es importante porque más de uno se ha vuelto loco con ese problema en las macros que modifican tablas dinámicas. También se puede plantear una versión que actualice todas las hojas de un libro. Espero que sea de utilidad. Saludos.

6 comentarios en “Truco Excel. Actualizar los filtros de una tabla dinámica con Visual basic

  1. Hola,tengo como 100 tablas dinámicas que cambia cada semana y necesito cambiar el filtro según a la semana que corresponda. Por ejemplo, esta semana es la 44 y la próxima 45. Pues debo actualizar de la semana 44 a la 45 en todas las tabas, puedo hacerlo con macros?
    Gracias de antemano

  2. Hola: quisiera saber como puedo actualizar mediante una macro los campos del area de valores de una tabla dinamica. Los datos provienen de una hoja en la que hay 12 columnas con numeros de cuenta y la idea es que el usuario pueda cambiarlos y mediante un boton ejecute la macro que crea la tabla dinamica.

    Tengo el siguiente codigo:

    ActiveSheet.PivotTables(“Tabla dinámica2”).ClearTable
    ActiveWorkbook.ShowPivotTableFieldList = True
    ActiveSheet.PivotTables(“Tabla dinámica2”).AddDataField ActiveSheet.PivotTables _
    (“Tabla dinámica2”).PivotFields(“11100000”), “Cuenta de 11100000”, xlCount
    With ActiveSheet.PivotTables(“Tabla dinámica2”).PivotFields( _
    “Cuenta de 11100000”)
    .Caption = “Suma de 11100000”
    .Function = xlSum
    End With

    Lo que varia es ese codigo 11000000 He intentado con variables pero no me funciona.

    Tambien he intentado solo actualizando pero igual no me funciona,

    ActiveSheet.PivotTables(“Tabla dinámica2”).PivotCache.Refresh
    ActiveWorkbook.RefreshAll

    With ActiveSheet.PivotTables(“Tabla dinámica2”).PivotFields&(“CTUNO”)
    .Orientation = xlRowField
    .Position = 6
    End With

    Agradezco su ayuda

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

[bws_google_captcha]