VBA - „Pivot Table“ filtras

Š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
wave wave wave wave wave