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 |