VBA - Pivot Table Filter

Denne vejledning viser, hvordan du bruger Pivot Table Filter i VBA.

Pivottabeller er et usædvanligt kraftfuldt dataværktøj i Excel. Pivottabeller gør det muligt for os at analysere og fortolke store datamængder ved at gruppere og opsummere felter og rækker. Vi kan anvende filtre til vores pivottabeller, så vi hurtigt kan se de data, der er relevante for os.

For det første skal vi oprette en pivottabel for vores data. (Klik her for vores VBA Pivot Table Guide).

Oprettelse af et filter baseret på en celleværdi

Du kan filtrere i en pivottabel ved hjælp af VBA baseret på data indeholdt i en celleværdi - vi kan enten filtrere på sidefeltet eller på et felt i en række (f.eks. I feltet Leverandør ovenfor eller feltet Oper, der er i kolonnen Rækkeetiketter) ).

I en tom celle til højre for pivottabellen skal du oprette en celle, der skal indeholde filteret, og derefter indtaste dataene i den celle, du vil filtrere pivottabellen på.

Opret følgende VBA -makro:

1234567 Sub FilterPageValue ()Dim pvFld som PivotFieldDim strFilter Som strengIndstil pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Leverandør")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Område ("M4"). VærdipvFld.CurrentPage = strFilterAfslut Sub

Kør makroen for at anvende filteret.

For at slette filteret skal du oprette følgende makro:

12345 Sub ClearFilter ()Dim pTbl som pivottabelIndstil pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersAfslut Sub

Filteret fjernes derefter.

Vi kan derefter ændre filterkriterierne for at filtrere på en række i pivottabellen frem for den aktuelle side.

Hvis du skriver følgende makro, kan vi derefter filtrere på rækken (bemærk, at Pivot -feltet, der skal filtreres på, nu er operatøren frem for leverandøren).

1234567 Sub FilterRowValue ()Dim pvFld som PivotFieldDim strFilter Som strengIndstil pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Område ("M4"). VærdipvFld.PivotFilters.Add2 xlCaptionEquals,, strFilterAfslut Sub

Kør makroen for at anvende filteret.

Brug af flere kriterier i et pivotfilter

Vi kan tilføje til rækkeværdifilteret ovenfor ved at tilføje yderligere kriterier.

Men da standardfilteret skjuler de rækker, der ikke er nødvendige, skal vi gå gennem kriterierne og vise dem, der kræves, mens vi skjuler dem, der ikke er nødvendige. Dette gøres ved at oprette en Array -variabel og bruge et par loops i koden.

1234567891011121314151617181920212223 UnderfilterMultipleRowItems ()Dim vArray som variantDim i As Integer, j As IntegerDim pvFld som PivotFieldIndstil pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Område ("M4: M5")pvFld.ClearAllFiltersMed pvFldFor i = 1 Til pvFld.PivotItems.Countj = 1Gør Mens j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Hvis pvFld.PivotItems (i) .Name = vArray (j, 1) SåpvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = TrueAfslut DoAndetpvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = FalskAfslut Hvisj = j + 1SløjfeNæste iAfslut medAfslut Sub

Oprettelse af et filter baseret på en variabel

Vi kan bruge de samme begreber til at oprette filtre baseret på variabler i vores kode frem for værdien i en celle. Denne gang er filtervariablen (strFilter) udfyldt i selve koden (f.eks .: Hard-coded into the macro).

1234567 Sub FilterTextValue ()Dim pvFld som PivotFieldDim strFilter Som strengIndstil pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Leverandør")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterAfslut Sub
wave wave wave wave wave