Denne opplæringen vil demonstrere hvordan du bruker pivottabellfilteret i VBA.
Pivottabeller er et eksepsjonelt kraftig dataverktøy i Excel. Pivottabeller lar oss analysere og tolke store datamengder ved å gruppere og oppsummere felt og rader. Vi kan bruke filtre på våre pivottabeller for å gjøre det mulig for oss å raskt se dataene som er relevante for oss.
For det første må vi lage en pivottabell for dataene våre. (Klikk her for vår VBA Pivot Table Guide).
Opprette et filter basert på en celleverdi
Du kan filtrere i en pivottabell ved hjelp av VBA basert på data i en celleverdi - vi kan enten filtrere på sidefeltet eller på et radfelt (for eksempel i feltet Leverandør ovenfor eller Oper -feltet i kolonnen Radetiketter) ).
I en tom celle til høyre for pivottabellen oppretter du en celle for å holde filteret, og skriver deretter inn dataene i cellen du vil filtrere pivottabellen på.
Lag følgende VBA -makro:
1234567 | Sub FilterPageValue ()Dim pvFld som PivotFieldDim strFilter As StringAngi pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Leverandør")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Område ("M4"). VerdipvFld.CurrentPage = strFilterSlutt Sub |
Kjør makroen for å bruke filteret.
For å fjerne filteret, opprett følgende makro:
12345 | Sub ClearFilter ()Dim pTbl som pivottabellSett pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersSlutt Sub |
Filteret vil da bli fjernet.
Vi kan deretter endre filterkriteriene for å filtrere på en rad i pivottabellen i stedet for gjeldende side.
Hvis du skriver inn følgende makro, kan vi deretter filtrere på raden (merk at Pivot -feltet å filtrere på nå er operatøren i stedet for leverandøren).
1234567 | Sub FilterRowValue ()Dim pvFld som PivotFieldDim strFilter As StringSett pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Område ("M4"). VerdipvFld.PivotFilters.Add2 xlCaptionEquals,, strFilterSlutt Sub |
Kjør makroen for å bruke filteret.
Bruke flere kriterier i et svingfilter
Vi kan legge til radverdi -filteret ovenfor ved å legge til flere kriterier.
Ettersom standardfilteret skjuler radene som ikke er nødvendige, må vi gå gjennom kriteriene og vise de som kreves, mens vi skjuler de som ikke er nødvendige. Dette gjøres ved å opprette en Array -variabel og bruke et par Loops i koden.
1234567891011121314151617181920212223 | Sub FilterMultipleRowItems ()Dim vArray som variantDim i As Integer, j As IntegerDim pvFld som PivotFieldSett pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Område ("M4: M5")pvFld.ClearAllFiltersMed pvFldFor i = 1 Til pvFld.PivotItems.Countj = 1Gjør mens j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Hvis pvFld.PivotItems (i) .Name = vArray (j, 1) DeretterpvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = TrueAvslutt DoEllerspvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = FalseSlutt omj = j + 1LøkkeNeste jegSlutt medSlutt Sub |
Opprette et filter basert på en variabel
Vi kan bruke de samme konseptene til å lage filtre basert på variabler i koden vår i stedet for verdien i en celle. Denne gangen er filtervariabelen (strFilter) befolket i selve koden (f.eks .: Hard-kodet inn i makroen).
1234567 | Sub FilterTextValue ()Dim pvFld som PivotFieldDim strFilter As StringAngi pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Leverandør")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterSlutt Sub |