VBA - Филтър за обобщена таблица

Този урок ще покаже как да използвате филтъра за обобщена таблица във VBA.

Обобщените таблици са изключително мощен инструмент за данни на Excel. Обобщените таблици ни позволяват да анализираме и интерпретираме големи количества данни чрез групиране и обобщаване на полета и редове. Можем да приложим филтри към нашите обобщени таблици, за да можем бързо да видим данните, които са от значение за нас.

Първо, трябва да създадем обобщена таблица за нашите данни. (Щракнете тук за нашето Ръководство за обобщена таблица VBA).

Създаване на филтър въз основа на стойност на клетката

Можете да филтрирате в обобщена таблица с помощта на VBA въз основа на данни, съдържащи се в стойност на клетка - можем да филтрираме или в полето Страница, или в поле Ред (например в полето Доставчик по -горе или полето Oper, което е в колоната Етикети на редове ).

В празна клетка вдясно от обобщената таблица създайте клетка, която да държи филтъра, и след това въведете данните в клетката, по която искате да филтрирате обобщената таблица.

Създайте следния VBA макрос:

1234567 Sub FilterPageValue ()Затъмнете pvFld като PivotFieldDim strFilter As StringЗадайте pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Supplier")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Range ("M4"). ValuepvFld.CurrentPage = strFilterEnd Sub

Изпълнете макроса, за да приложите филтъра.

За да изчистите филтъра, създайте следния макрос:

12345 Sub ClearFilter ()Затъмнете pTbl като обобщена таблицаЗадайте pTbl = ActiveSheet.PivotTables ("PivotTable1")pTbl.ClearAllFiltersEnd Sub

След това филтърът ще бъде премахнат.

След това можем да променим критериите за филтриране, за да филтрираме по ред в обобщената таблица, а не върху текущата страница.

Въвеждането на следния макрос след това ще ни позволи да филтрираме по реда (имайте предвид, че обобщеното поле за филтриране вече е Oper, а не доставчик).

1234567 ПодфилтърRowValue ()Затъмнете pvFld като PivotFieldDim strFilter As StringЗадайте pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")strFilter = ActiveWorkbook.Sheets ("Sheet1"). Range ("M4"). ValuepvFld.PivotFilters.Add2 xlCaptionEquals ,, strFilterEnd Sub

Изпълнете макроса, за да приложите филтъра.

Използване на множество критерии в обобщен филтър

Можем да добавим към филтъра за стойност на ред по -горе, като добавим допълнителни критерии.

Въпреки това, тъй като стандартният филтър скрива редовете, които не са задължителни, трябва да преминем през критериите и да покажем тези, които са повторно зададени, като същевременно скрием тези, които не са задължителни. Това става чрез създаване на променлива Array и използване на няколко цикъла в кода.

1234567891011121314151617181920212223 ПодфилтърMultipleRowItems ()Dim vArray като вариантDim i като цяло число, j като цяло числоЗатъмнете pvFld като PivotFieldЗадайте pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Oper")vArray = Диапазон ("M4: M5")pvFld.ClearAllFiltersС pvFldЗа i = 1 Към pvFld.PivotItems.Countj = 1Do Докато j <= UBound (vArray, 1) - LBound (vArray, 1) + 1Ако pvFld.PivotItems (i) .Name = vArray (j, 1) ТогаваpvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = TrueИзлезте от DoИначеpvFld.PivotItems (pvFld.PivotItems (i) .Name) .Visible = FalseКрай Акоj = j + 1ЦикълСледва iКрай сEnd Sub

Създаване на филтър въз основа на променлива

Можем да използваме същите концепции за създаване на филтри въз основа на променливи в нашия код, а не на стойността в клетка. Този път променливата на филтъра (strFilter) се попълва в самия код (напр .: Твърдо кодирана в макроса).

1234567 Sub FilterTextValue ()Затъмнете pvFld като PivotFieldDim strFilter As StringЗадайте pvFld = ActiveSheet.PivotTables ("PivotTable1"). PivotFields ("Доставчик")strFilter = "THOMAS S"pvFld.CurrentPage = strFilterEnd Sub
wave wave wave wave wave