VBA - Filtro de tabla dinámica

Este tutorial demostrará cómo usar el filtro de tabla dinámica en VBA.

Las tablas dinámicas son una herramienta de datos excepcionalmente poderosa de Excel. Las tablas dinámicas nos permiten analizar e interpretar grandes cantidades de datos agrupando y resumiendo campos y filas. Podemos aplicar filtros a nuestras tablas dinámicas para permitirnos ver rápidamente los datos que son relevantes para nosotros.

En primer lugar, necesitamos crear una tabla dinámica para nuestros datos. (Haga clic aquí para ver nuestra Guía de tablas dinámicas de VBA).

Crear un filtro basado en un valor de celda

Puede filtrar en una tabla dinámica utilizando VBA en función de los datos contenidos en un valor de celda; podemos filtrar en el campo Página o en un campo Fila (por ejemplo, en el campo Proveedor arriba o en el campo Oper que está en la columna Etiquetas de fila ).

En una celda vacía a la derecha de la tabla dinámica, cree una celda para contener el filtro y luego escriba los datos en la celda en la que desea filtrar la tabla dinámica.

Cree la siguiente macro de VBA:

1234567 Sub FilterPageValue ()Dim pvFld como campo dinámicoDim strFilter como cadenaEstablecer pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Proveedor")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Range ("M4"). ValuepvFld.CurrentPage = strFilterEnd Sub

Ejecute la macro para aplicar el filtro.

Para borrar el filtro, cree la siguiente macro:

12345 Sub ClearFilter ()Dim pTbl como tabla dinámicaEstablecer pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersEnd Sub

Entonces se quitará el filtro.

Luego, podemos modificar los criterios de filtrado para filtrar en una fila de la tabla dinámica en lugar de en la página actual.

Escribir la siguiente macro nos permitirá filtrar en la fila (tenga en cuenta que el campo dinámico para filtrar ahora es el operador en lugar del proveedor).

1234567 Sub FilterRowValue ()Dim pvFld como campo dinámicoDim strFilter como cadenaEstablecer pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Range ("M4"). ValuepvFld.PivotFilters.Add2 xlCaptionEquals`` strFilterEnd Sub

Ejecute la macro para aplicar el filtro.

Uso de varios criterios en un filtro dinámico

Podemos agregar al filtro de valor de Fila anterior agregando criterios adicionales.

Sin embargo, como el filtro estándar oculta las filas que no son necesarias, necesitamos recorrer los criterios y mostrar las que son requeridas, mientras ocultamos las que no son necesarias. Esto se hace creando una variable Array y usando un par de Loops en el código.

1234567891011121314151617181920212223 Sub FilterMultipleRowItems ()Dim vArray como varianteDim i como entero, j como enteroDim pvFld como campo dinámicoEstablecer pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Rango ("M4: M5")pvFld.ClearAllFiltersCon pvFldPara i = 1 a pvFld.PivotItems.Countj = 1Hacer mientras j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Si pvFld.PivotItems (i) .Name = vArray (j, 1) EntoncespvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = TrueSalir HacerDemáspvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = FalseTerminara sij = j + 1CírculoSiguiente yoTerminar conEnd Sub

Crear un filtro basado en una variable

Podemos usar los mismos conceptos para crear filtros basados ​​en variables en nuestro código en lugar del valor en una celda. Esta vez, la variable de filtro (strFilter) se completa en el código mismo (por ejemplo: codificada en la macro).

1234567 Sub FilterTextValue ()Dim pvFld como campo dinámicoDim strFilter como cadenaEstablecer pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Proveedor")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterEnd Sub
wave wave wave wave wave