W VBA możesz tworzyć Autofiltr w celu filtrowania zakresu komórek lub tabeli Excela. W tym samouczku dowiesz się, jak tworzyć Autofiltr dla jednej lub wielu kolumn i dla wielu warunków.
Jeśli chcesz dowiedzieć się, jak korzystać z zaawansowanego filtra w VBA, kliknij tutaj: Zaawansowany filtr VBA
Tworzenie autofiltru w VBA
Najpierw zobaczysz, jak po prostu tworzyć Autofiltr w zakresie, dzięki czemu użytkownik może filtrować dane. Dane, które wykorzystamy w przykładach, znajdują się na obrazku 1:
Rysunek 1. Dane dla przykładów Autofiltra
Oto kod do tworzenia Autofiltr:
1 | Arkusz1.Zakres("A1:E1").Autofiltr |
Aby włączyć Autofiltr, musimy określić nagłówek zakresu, w naszym przypadku A1:E1 i użyć Autofiltr metoda obiektu Zasięg. W rezultacie nasz zakres danych ma aktywowane filtry:
Obraz 2. Autofiltr włączony dla danych
Autofiltr z parametrami pól i kryteriów
VBA pozwala również automatycznie filtrować określone pole za pomocą określonych wartości.
Aby to zrobić, musisz użyć parametrów Pole oraz Kryteria1 metody Autofiltr. W tym przykładzie chcemy przefiltrować trzecią kolumnę (Produkt) dla Produkt A tylko. Oto kod:
12 | Arkusz1.Zakres("A1:E1").Pole autofiltru:=3, _Kryterium1:="Produkt A" |
w Pole parametr, możesz ustawić numer kolumny w zakresie (nie w Excelu), podczas gdy w Kryteria1 możesz umieścić wartość, którą chcesz filtrować. Po wykonaniu kodu nasza tabela wygląda tak:
Obraz 3. Autofiltr z polem i kryteriami
Jak widać, tylko wiersze z Produkt A w trzeciej kolumnie są wyświetlane w zakresie danych.
Autofiltrowanie z wartościami pól i wieloma kryteriami
Jeśli chcesz filtrować jedno pole z kilkoma wartościami, musisz użyć parametru Operator z Autofiltr metoda. Aby filtrować wiele wartości, musisz ustawić Operator do xlWartościFiltru a także umieścić wszystkie wartości Kryteria w tablicy. W tym przykładzie filtrujemy Produkt kolumna dla Produkt A oraz Produkt B. Oto przykład kodu:
123 | Arkusz1.Zakres("A1:E1").Pole autofiltru:=3, _Criteria1:=Array("Produkt A", "Produkt B"), _Operator:=xlFilterValues |
Kiedy wykonujemy kod, otrzymujemy tylko wiersze z Produktem A i Produktem B, jak widać na obrazku 4:
Obraz 4. Autofiltr z wartościami wielu kryteriów
Zakres danych automatycznego filtrowania z wieloma kryteriami
Jeśli chcesz filtrować pole z wieloma kryteriami, musisz użyć Kryteria1 oraz Kryteria2 parametry, ale także Operator xlAnd.
W następnym przykładzie przefiltrujemy pierwszą kolumnę (Data) dla dat z grudnia 2022 r. W związku z tym mamy dwa kryteria: datę większą niż 12.01.2018 i krótszą niż 31.12.18. Oto kod:
1234 | Arkusz1.Zakres("A1:E1").Pole autofiltru:=1, _Kryterium1:=">=12/01/2018", _Operator:=xlI, _Kryteria2:="<=12/31/2018" |
Po wykonaniu kodu widać, że w zakresie danych wyświetlane są tylko daty w grudniu:
Obraz 5. Autofiltr z wieloma kryteriami dla pola
Wartości parametrów operatora metody AutoFilter
W następnej tabeli. możesz zobaczyć wszystkie możliwe wartości Operator parametr metody AutoFilter i ich opisy:
Operator | Opis |
xlAnd | Obejmuje wiele kryteriów - Kryteria 1 i Kryteria 2 |
xlOr | Zawiera jedno z wielu kryteriów - Kryterium 1 lub Kryterium 2 |
xlTop10Przedmioty | Filtruje określoną liczbę najwyżej sklasyfikowanych wartości (liczba określona w Kryterium1) |
xlBottom10Items | Filtruje określoną liczbę wartości o najniższym rankingu (liczba określona w Kryterium1) |
xlTop10 procent | Filtruje pewien procent najwyżej sklasyfikowanych wartości (% określony w Kryterium1) |
xlBottom10 procent | Filtruje pewien procent wartości o najniższym rankingu (% określony w Kryterium1) |
xlWartościFiltru | Zawiera wiele wartości kryteriów z Array |
xlFiltrKolorKomórki | Filtruje komórki pod kątem kolorów |
xlFilter Kolor Czcionki | Filtruje komórki pod kątem kolorów czcionek |
xlFilterIkona | Ikony filtrów |
xlFiltrDynamiczny | Filtruj wartości dynamiczne |