Ši pamoka parodys, kaip naudoti „Pivot Table“ filtrą VBA.
„Pivot“ lentelės yra ypač galingas „Excel“ duomenų įrankis. „Pivot“ lentelės leidžia mums analizuoti ir interpretuoti didelius duomenų kiekius, grupuojant ir apibendrinant laukus ir eilutes. Savo suvestinėse lentelėse galime pritaikyti filtrus, kad galėtume greitai pamatyti mums svarbius duomenis.
Pirma, turime sukurti „Pivot“ lentelę savo duomenims. (Spustelėkite čia, kad gautumėte mūsų „VBA Pivot Table“ vadovą).
Filtro kūrimas pagal langelio vertę
Galite sufiltruoti „Pivot“ lentelėje naudodami VBA, remdamiesi langelio reikšmėje esančiais duomenimis - mes galime filtruoti lauke Puslapis arba Eilutė (pvz., Aukščiau esančiame lauke Tiekėjas arba lauke „Operacija“, esančiame stulpelyje Eilučių etiketės) ).
Tuščiame langelyje „Pivot“ lentelės dešinėje sukurkite langelį filtrui laikyti, tada įveskite duomenis į langelį, kuriame norite filtruoti „Pivot“ lentelę.
Sukurkite šią VBA makrokomandą:
1234567 | Sub FilterPageValue ()Dim pvFld Kaip PivotFieldDim strFilter kaip eilutėNustatykite pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Tiekėjas")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Diapazonas ("M4"). VertėpvFld.CurrentPage = strFilterPabaiga Sub |
Norėdami pritaikyti filtrą, paleiskite makrokomandą.
Norėdami išvalyti filtrą, sukurkite šią makrokomandą:
12345 | Sub ClearFilter ()„Dim pTbl“ kaip „PivotTable“Nustatykite pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersPabaiga Sub |
Tada filtras bus pašalintas.
Tada galime pakeisti filtro kriterijus, kad filtruotume „Pivot“ lentelės eilutėje, o ne dabartiniame puslapyje.
Įvedę šią makrokomandą, mes galėsime filtruoti eilutėje (atkreipkite dėmesį, kad filtravimo „Pivot“ laukas dabar yra „Oper“, o ne „Tiekėjas“).
1234567 | Sub FilterRowValue ()Dim pvFld Kaip PivotFieldDim strFilter kaip eilutėNustatykite pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Diapazonas ("M4"). VertėpvFld.PivotFilters.Add2 xlCaptionEquals,, strFilterPabaiga Sub |
Norėdami pritaikyti filtrą, paleiskite makrokomandą.
Kelių kriterijų naudojimas „Pivot“ filtre
Prie aukščiau esančio eilutės vertės filtro galime pridėti pridėję papildomų kriterijų.
Tačiau, kadangi standartinis filtras slepia nereikalingas eilutes, turime pereiti prie kriterijų ir parodyti reikalingus, o paslėpti tuos, kurių nereikia. Tai daroma sukuriant masyvo kintamąjį ir naudojant keletą kilpų kode.
1234567891011121314151617181920212223 | Papildomas filtrasMultipleRowItems ()„Dim vArray As Variant“Dim i As Integer, j As IntegerDim pvFld Kaip PivotFieldNustatykite pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Diapazonas ("M4: M5")pvFld.ClearAllFiltersSu pvFldJei i = 1 Į pvFld.PivotItems.Countj = 1Ar nors j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Jei pvFld.PivotItems (i). Pavadinimas = vArray (j, 1) TadapvFld.PivotItems (pvFld.PivotItems (i). Pavadinimas). Visible = TiesaIšeiti DarytiKitaspvFld.PivotItems (pvFld.PivotItems (i). Pavadinimas). Visible = FalsePabaiga Jeij = j + 1KilpaKitas I.Pabaiga suPabaiga Sub |
Filtro kūrimas pagal kintamąjį
Mes galime naudoti tas pačias sąvokas kurdami filtrus, pagrįstus mūsų kodo kintamaisiais, o ne langelio verte. Šį kartą filtro kintamasis (strFilter) užpildomas pačiame kode (pvz., Kietai užkoduotas makrokomandoje).
1234567 | Sub FilterTextValue ()Dim pvFld Kaip PivotFieldDim strFilter kaip eilutėNustatykite pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Tiekėjas")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterPabaiga Sub |