VBA - filtr tabeli przestawnej

W tym samouczku zademonstrujemy, jak używać filtru tabeli przestawnej w języku VBA.

Tabele przestawne to wyjątkowo potężne narzędzie do obsługi danych w programie Excel. Tabele przestawne pozwalają nam analizować i interpretować duże ilości danych poprzez grupowanie i podsumowywanie pól i wierszy. Możemy zastosować filtry do naszych tabel przestawnych, aby umożliwić nam szybkie przeglądanie danych, które są dla nas istotne.

Po pierwsze, musimy stworzyć tabelę przestawną dla naszych danych. (Kliknij tutaj, aby zapoznać się z naszym przewodnikiem po tabelach przestawnych VBA).

Tworzenie filtra na podstawie wartości komórki

Możesz filtrować w tabeli przestawnej za pomocą VBA na podstawie danych zawartych w wartości komórki - możemy filtrować według pola Strona lub pola Wiersz (na przykład w polu Dostawca powyżej lub w polu Opera, które znajduje się w kolumnie Etykiety wierszy ).

W pustej komórce po prawej stronie tabeli przestawnej utwórz komórkę do przechowywania filtru, a następnie wpisz dane w komórce, według której chcesz filtrować tabelę przestawną.

Utwórz następujące makro VBA:

1234567 Wartość strony filtra podrzędnego()Przyciemnij pvFld jako pole przestawneDim strFilter As StringUstaw pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Dostawca")strFilter = ActiveWorkbook.Sheets("Arkusz1").Range("M4").ValuepvFld.CurrentPage = filtr str.Napis końcowy

Uruchom makro, aby zastosować filtr.

Aby wyczyścić filtr, utwórz następujące makro:

12345 Wyczyść filtr pomocniczy()Dim pTbl jako tabela przestawnaUstaw pTbl = ActiveSheet.PivotTables("Tabela przestawna1")pTbl.Wyczyść wszystkie filtryNapis końcowy

Filtr zostanie wtedy usunięty.

Następnie możemy zmienić kryteria filtrowania, aby filtrować według wiersza w tabeli przestawnej, a nie na bieżącej stronie.

Wpisanie następującego makra umożliwi nam filtrowanie w wierszu (zauważ, że polem przestawnym do filtrowania jest teraz Oper, a nie dostawca).

1234567 Podrzędna wartość wiersza filtra()Przyciemnij pvFld jako pole przestawneDim strFilter As StringUstaw pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Oper")strFilter = ActiveWorkbook.Sheets("Arkusz1").Range("M4").ValuepvFld.PivotFilters.Add2 xlCaptionEquals, , strFilterNapis końcowy

Uruchom makro, aby zastosować filtr.

Używanie wielu kryteriów w filtrze przestawnym

Możemy dodać do powyższego filtra wartości wiersza, dodając dodatkowe kryteria.

Ponieważ jednak standardowy filtr ukrywa wiersze, które nie są wymagane, musimy przejrzeć kryteria i pokazać te, które są wymagane, jednocześnie ukrywając te, które nie są wymagane. Odbywa się to poprzez utworzenie zmiennej Array i użycie kilku pętli w kodzie.

1234567891011121314151617181920212223 Filtr podrzędnyMultipleRowItems()Dim vArray As VariantDim i As Integer, j As IntegerPrzyciemnij pvFld jako pole przestawneUstaw pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Oper")vArray = Zakres("M4:M5")pvFld.Wyczyść wszystkie filtryZ pvFldDla i = 1 To pvFld.PivotItems.Countj = 1Do While j <= UBound(vArray, 1) - LBound(vArray, 1) + 1Jeśli pvFld.PivotItems(i).Name = vArray(j, 1) WtedypvFld.PivotItems(pvFld.PivotItems(i).Name).Visible = TrueWyjście WykonajW przeciwnym raziepvFld.PivotItems(pvFld.PivotItems(i).Name).Visible = FalseZakończ, jeślij = j + 1PętlaDalej jaKończyć zNapis końcowy

Tworzenie filtra na podstawie zmiennej

Możemy użyć tych samych koncepcji do tworzenia filtrów na podstawie zmiennych w naszym kodzie, a nie wartości w komórce. Tym razem zmienna filtru (strFilter) jest umieszczana w samym kodzie (np.: Zakodowana na sztywno w makrze).

1234567 Sub FiltrTekstWartości()Przyciemnij pvFld jako pole przestawneDim strFilter As StringUstaw pvFld = ActiveSheet.PivotTables("PivotTable1").PivotFields("Dostawca")strFilter = "THOMAS S"pvFld.CurrentPage = filtr str.Napis końcowy
wave wave wave wave wave