See õpetus näitab, kuidas VBA -s liigendtabeli filtrit kasutada.
Pivot -tabelid on Exceli erakordselt võimas andmetööriist. Pivot -tabelid võimaldavad meil analüüsida ja tõlgendada suuri andmemahtusid, rühmitades ja koondades välju ja ridu. Pöördtabelitele saame rakendada filtreid, et saaksime kiiresti näha meile olulisi andmeid.
Esiteks peame looma oma andmete jaoks Pivot -tabeli. (Meie VBA pöördetabeli juhendi saamiseks klõpsake siin).
Lahtri väärtuse põhjal filtri loomine
Pivot -tabelis saate filtreerida VBA -d, kasutades lahtri väärtuses sisalduvaid andmeid - saame filtreerida kas väljal Lehekülg või rida (näiteks ülaltoodud väljal Tarnija või veerul Reasildid asuv väli Oper). ).
Pivot -tabelist paremal asuvas tühjas lahtris looge lahter filtri hoidmiseks ja tippige seejärel andmed lahtrisse, milles soovite Pivot -tabelit filtreerida.
Looge järgmine VBA makro:
1234567 | AlamfilterPageValue ()Dim pvFld PivotFieldDim strFilter stringinaMäära pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("tarnija")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Vahemik ("M4"). VäärtuspvFld.CurrentPage = strFilterEnd Sub |
Filtri rakendamiseks käivitage makro.
Filtri tühjendamiseks looge järgmine makro:
12345 | Alam ClearFilter ()Dim pTbl PivotTable -liigendtabelinaMäära pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersEnd Sub |
Seejärel eemaldatakse filter.
Seejärel saame muuta filtreerimiskriteeriume, et filtreerida Pivot -tabeli reale, mitte praegusele lehele.
Järgmise makro sisestamine võimaldab meil filtreerida real (pange tähele, et filtreeritav pöördväli on nüüd pigem operaator kui tarnija).
1234567 | AlamfilterRowValue ()Dim pvFld PivotFieldDim strFilter stringinaMäära pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Vahemik ("M4"). VäärtuspvFld.PivotFilters.Add2 xlCaptionEquals,, strFilterEnd Sub |
Filtri rakendamiseks käivitage makro.
Pivot -filtris mitme kriteeriumi kasutamine
Ülaltoodud rea väärtuse filtrile saame lisada täiendavaid kriteeriume.
Kuid kuna tavaline filter varjab mittevajalikke ridu, peame kriteeriumid läbi vaatama ja esitama nõutavad, kuid mittevajalikud. Seda tehakse, luues muutuja Array ja kasutades koodis paar silmust.
1234567891011121314151617181920212223 | AlamfilterMultipleRowItems ()Dim vArray kui variantDim i täisarvuna, j täisarvunaDim pvFld PivotFieldMäära pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = vahemik ("M4: M5")pvFld.ClearAllFiltersKoos pvFld -igaI = 1 jaoks pvFld.PivotItems.Countj = 1Tehke samas j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Kui pvFld.PivotItems (i). Nimi = vArray (j, 1) SiispvFld.PivotItems (pvFld.PivotItems (i) .Nimi) .Visible = TrueVälju DoMuidupvFld.PivotItems (pvFld.PivotItems (i) .Nimi) .Visible = valeLõpp Kuij = j + 1LoopEdasi iLõpetaEnd Sub |
Muutuja põhjal filtri loomine
Saame kasutada samu mõisteid filtrite loomiseks, mis põhinevad meie koodi muutujatel, mitte lahtri väärtusel. Seekord on filtrimuutuja (strFilter) täidetud koodis endas (nt: Makrosse kõvakodeeritud).
1234567 | AlamfilterTextValue ()Dim pvFld PivotFieldDim strFilter stringinaMäära pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("tarnija")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterEnd Sub |