VBA - Filter vrtilne tabele

Ta vadnica bo pokazala, kako uporabiti filter vrtilne tabele v VBA.

Vrtilne tabele so izjemno zmogljivo podatkovno orodje Excela. Vrtilne tabele nam omogočajo analizo in razlago velikih količin podatkov z združevanjem in povzemom polj in vrstic. Za vrtilne tabele lahko uporabimo filtre, da lahko hitro vidimo podatke, ki so za nas pomembni.

Najprej moramo za svoje podatke ustvariti vrtilno tabelo. (Kliknite tukaj za naš vodnik po vrtilni tabeli VBA).

Ustvarjanje filtra na podlagi vrednosti celice

V vrtilni tabeli lahko filtrirate z uporabo VBA na podlagi podatkov v vrednosti celice - lahko filtriramo v polju strani ali v polju vrstice (na primer v polju Dobavitelj zgoraj ali polju Oper v stolpcu Oznake vrstic ).

V prazni celici na desni strani vrtilne tabele ustvarite celico za shranjevanje filtra in nato vnesite podatke v celico, v kateri želite filtrirati vrtilno tabelo.

Ustvarite naslednji makro VBA:

1234567 Sub FilterPageValue ()Zatemni pvFld kot vrtilno poljeZatemni strFilter kot nizNastavite pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Supplier")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Range ("M4"). ValuepvFld.CurrentPage = strFilterEnd Sub

Zaženite makro, da uporabite filter.

Če želite počistiti filter, ustvarite naslednji makro:

12345 Sub ClearFilter ()Zatemni pTbl kot vrtilno tabeloNastavi pTbl = ActiveSheet.PivotTables ("Vrtilna tabela1")pTbl.ClearAllFiltersEnd Sub

Filter bo nato odstranjen.

Nato lahko spremenimo kriterije filtriranja, da filtriramo v vrstici v vrtilni tabeli in ne na trenutni strani.

Vnos naslednjega makra nam bo nato omogočil filtriranje po vrstici (upoštevajte, da je vrtilno polje za filtriranje zdaj Oper in ne dobavitelj).

1234567 Sub FilterRowValue ()Zatemni pvFld kot vrtilno poljeZatemni strFilter kot nizNastavi pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Range ("M4"). ValuepvFld.PivotFilters.Add2 xlCaptionEquals,, strFilterEnd Sub

Zaženite makro, da uporabite filter.

Uporaba več meril v vrtilnem filtru

Zgornjemu filtru vrednosti vrstice lahko dodamo dodatna merila.

Ker pa standardni filter skrije vrstice, ki niso obvezne, moramo pregledati merila in prikazati tiste, ki so zahtevani, medtem ko skrivamo tiste, ki niso obvezne. To naredite tako, da ustvarite spremenljivko Array in v kodi uporabite nekaj zank.

1234567891011121314151617181920212223 PodfilterMultipleRowItems ()Dim vArray kot variantaDim i kot celo število, j kot celo številoZatemni pvFld kot vrtilno poljeNastavi pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Razpon ("M4: M5")pvFld.ClearAllFiltersS pvFldZa i = 1 Za pvFld.PivotItems.Countj = 1Naredi j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Če pvFld.PivotItems (i) .Name = vArray (j, 1) PotempvFld.PivotItems (pvFld.PivotItems (i). Ime) .Visible = TrueIzhod DoSicer papvFld.PivotItems (pvFld.PivotItems (i). Ime) .Visible = FalseKonec Čej = j + 1ZankaNaprej iKončaj sEnd Sub

Ustvarjanje filtra na podlagi spremenljivke

Iste koncepte lahko uporabimo za ustvarjanje filtrov na podlagi spremenljivk v naši kodi in ne vrednosti v celici. Tokrat je spremenljivka filtra (strFilter) zasedena v sami kodi (npr .: trdo kodirana v makro).

1234567 Sub FilterTextValue ()Zatemni pvFld kot vrtilno poljeZatemni strFilter kot nizNastavite pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Supplier")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterEnd Sub
wave wave wave wave wave