VBA - Pivot Table Filter

Tämä opetusohjelma osoittaa, miten pivot -taulukkosuodatinta käytetään VBA: ssa.

Pivot -taulukot ovat poikkeuksellisen tehokas Excelin datatyökalu. Pivot -taulukoiden avulla voimme analysoida ja tulkita suuria tietomääriä ryhmittelemällä ja tiivistämällä kenttiä ja rivejä. Voimme käyttää suodattimia pivot -taulukoihimme, jotta voimme nähdä nopeasti meille tärkeät tiedot.

Ensinnäkin meidän on luotava pivot -taulukko tiedoillemme. (Napsauta tätä saadaksesi VBA -pivot -taulukko -oppaamme).

Suodattimen luominen solun arvon perusteella

Voit suodattaa pivot -taulukon käyttämällä VBA: ta solun arvon sisältämien tietojen perusteella - voimme suodattaa joko Sivu- tai Rivikenttä (esimerkiksi yllä olevassa Toimittaja -kentässä tai Oper -kentässä, joka on Rivitunnisteet -sarakkeessa) ).

Luo Pivot -taulukon oikealla puolella olevaan tyhjään soluun solu, joka pitää suodattimen, ja kirjoita sitten tiedot soluun, johon haluat suodattaa Pivot -taulukon.

Luo seuraava VBA -makro:

1234567 Sub FilterPageValue ()Dim pvFld Kuten PivotFieldDim strFilter merkkijononaAseta pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Toimittaja")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Alue ("M4"). ArvopvFld.CurrentPage = strFilterEnd Sub

Suorita makro suodattimen käyttämiseksi.

Voit tyhjentää suodattimen luomalla seuraavan makron:

12345 Sub ClearFilter ()Dim pTbl Pivot -taulukkonaAseta pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersEnd Sub

Suodatin poistetaan sitten.

Voimme sitten muuttaa suodatusehtoja suodattamaan rivin Pivot -taulukossa nykyisen sivun sijasta.

Kirjoittamalla seuraavan makron voimme suodattaa rivin (huomaa, että suodatettava nivelkenttä on nyt operaattori eikä toimittaja).

1234567 Sub FilterRowValue ()Dim pvFld Kuten PivotFieldDim strFilter merkkijononaAseta pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Alue ("M4"). ArvopvFld.PivotFilters.Add2 xlCaptionEquals,, strFilterEnd Sub

Suorita makro suodattimen käyttämiseksi.

Useiden ehtojen käyttö pivot -suodattimessa

Voimme lisätä yllä olevaan Riviarvon suodattimeen lisäämällä lisäehtoja.

Kuitenkin, koska vakiosuodatin piilottaa rivit, joita ei vaadita, meidän on toistettava kriteerit ja näytettävä vaaditut, mutta piilotettava ne, joita ei vaadita. Tämä tehdään luomalla Array -muuttuja ja käyttämällä muutamia silmukoita koodissa.

1234567891011121314151617181920212223 AlisuodatinMultipleRowItems ()Dim vArray vaihtoehtoinaDim i kokonaislukuna, j kokonaislukunaDim pvFld Kuten PivotFieldAseta pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Alue ("M4: M5")pvFld.ClearAllFiltersPvFld: n kanssaSillä i = 1 PvFld.PivotItems.Countj = 1Tee vaikka j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Jos pvFld.PivotItems (i) .Nimi = vArray (j, 1) SittenpvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = TrueLopeta DoMuupvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = FalseLoppu Josj = j + 1SilmukkaSeuraavaksi minäLopetaEnd Sub

Suodattimen luominen muuttujan perusteella

Voimme käyttää samoja käsitteitä luodaksemme suodattimia koodimme muuttujien perusteella solun arvon sijaan. Tällä kertaa suodatinmuuttuja (strFilter) täytetään itse koodissa (esim. Kovakoodattu makroon).

1234567 Sub FilterTextValue ()Dim pvFld Kuten PivotFieldDim strFilter merkkijononaAseta pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Toimittaja")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterEnd Sub
wave wave wave wave wave