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 |