Autofiltr VBA

Autofiltr Excel VBA

Autofiltr w języku VBA jest używany jako wyrażenie, a jego składnia jest następująca: Wyrażenie. Autofiltr (Pole, Kryteria 1, Operator, Kryteria 2, Lista rozwijana) wszystkie argumenty są opcjonalne. Filtr jest pomocny w odfiltrowaniu określonych danych z ogromnych danych.

Jeśli jesteś zwykłym użytkownikiem, filtry Excela nie są dla Ciebie dziwne. Niektóre z narzędzi, których używamy w arkuszu roboczym, są również zintegrowane z VBA, a opcja automatycznego filtrowania jest jednym z ważnych narzędzi dostępnych w VBA. Jak wszyscy wiemy, filtr Excela jest dostępny w zakładce danych.

Korzystając z tej opcji filtru, możemy bawić się danymi. Jeśli masz do czynienia z minimalną ilością danych i jeśli uważasz, że opcja autofiltru VBA nie jest naprawdę wymagana, możesz nadal korzystać z opcji filtra arkusza.

Jeśli masz do czynienia z ogromną ilością danych, możesz skorzystać z opcji Autofiltr, aby uprościć przebieg procesu.

Składnia funkcji AutoFilter

Autofiltru w Excel VBA można używać z obiektem zakresu. Podobnie jak inne nasze funkcje, ta również ma swoją własną składnię.

  • Zakres: zakres to po prostu zakres, w jakim chcesz zastosować filtr.
  • Pole: Pole oznacza, z której kolumny wybranego zakresu chcesz odfiltrować dane. Kolumna będzie liczona od lewej do prawej.

Na przykład, jeśli Twój zakres wynosi od A1 do D100 i chcesz zastosować filtr dla kolumny D, to numer pola to 4, ponieważ w wybranym zakresie D jest czwartą kolumną.

Kryterium 1: W polu wybrałeś, co chcesz filtrować.

  • Operator: Jeśli chcesz zastosować więcej niż jedno kryterium do filtrowania danych, musimy użyć symboli operatora. Niektóre z kodów operatorów są jak poniżej.

xlAnd, xlOr, xlBottom10Items, xlTop10Items, xlTop10Percent, xlBottom10Percent, xlFilterCellColor, xlFilterDynamic, xlFilterFontColor, xlFilterIcon, xlFilterValues.

Kryterium 2: jaka jest druga rzecz, którą chcesz filtrować wraz z kryterium 1?

  • Widoczne menu rozwijane : Czy chcesz wyświetlić ikonę filtra fop w przefiltrowanej kolumnie. Jeśli chcesz wyświetlić PRAWDA jest argumentem, jeśli nie FAŁSZ jest argumentem.

Jak zastosować filtr za pomocą Autofiltru VBA? (z przykładem)

Możesz pobrać ten szablon Autofiltru VBA tutaj - Szablon Autofiltru VBA

Załóżmy poniżej danych, nad którymi pracujesz.

Teraz używając kodu VBA zastosujemy filtr. Wykonaj poniższe czynności, aby zastosować filtr.

Krok 1: Rozpocznij podprocedurę, nadając nazwę makro.

Kod:

 Sub AutoFilter_Example1 () End Sub 

Krok 2: Pierwszą  rzeczą jest to, w jakim zakresie musimy zastosować filtr. W tym przypadku musimy zastosować zakres od A1 do E25.

Kod:

 Sub AutoFilter_Example1 () Range ("A1: E25") End Sub 

Krok 3: Po wybraniu zakresu zastosuj teraz opcję autofiltru.

Kod:

 Sub AutoFilter_Example1 () Range („A1: E25”). AutoFilter End Sub 

Nie wybieramy żadnych wartości za pomocą autofiltra, a raczej stosujemy filtr w tym momencie.

Uruchom kod za pomocą klawisza F5 lub ręcznie wstawi filtr dla wybranego zakresu.

Więc zastosował filtr do danych. Teraz zobaczymy, jak odfiltrować dane.

Przykład 1 - odfiltrowywanie danych za pomocą Autofiltru

Rozważ te same dane z powyższego przykładu. Teraz musimy odfiltrować dział „Finanse” z kolumny dział.

Krok 1: Po zastosowaniu filtru pierwszym argumentem jest wskazanie, z której kolumny filtrujemy dane. W takim przypadku musimy przefiltrować dane z kolumny Dział, więc numer kolumny to 5.

Kod:

 Sub AutoFilter_Example1 () Range („A1: E25”). Pole Autofiltru: = 5, End Sub 

Krok 2: Kryterium 1 to nic innego, jak to, co chcemy odfiltrować z piątej kolumny. Dlatego musimy odfiltrować „Finanse”.

Kod:

 Sub AutoFilter_Example1 () Range („A1: E25”). Pole AutoFilter: = 5, Criteria1: = „Finance” End Sub 

To wszystko, uruchom ten kod ręcznie lub za pomocą klawisza F5, który odfiltruje tylko „Finanse” z listy.

Przykład 2 - Operator w Autofiltrze

Widzieliśmy, jak filtrować pojedynczą wartość. Teraz zobaczymy, jak filtrować wiele elementów. Załóżmy, że razem z „Finance” chcesz przefiltrować również dział „Sales”, abyśmy mogli to zrobić za pomocą operatorów.

Krok 1: Po zastosowaniu pierwszych kryteriów w kolejnym argumencie wybierz operator „xlOr”.

Kod:

 Sub AutoFilter_Example2 () Range („A1: E25”). Pole AutoFilter: = 5, Criteria1: = „Finance”, Operator: = xlOr End Sub 

Krok 2: Teraz w Kryterium 2 podaj wartość jako „Sprzedaż”.

Kod:

 Sub AutoFilter_Example2 () Range („A1: E25”). Pole AutoFilter: = 5, Criteria1: = „Finance”, Operator: = xlOr, Criteria2: = „Sales” End Sub 

Krok 3: OK, gotowe, uruchom ten kod za pomocą klawisza F5 lub ręcznie odfiltruje zarówno „Finanse”, jak i „Sprzedaż”.

W argumencie Operator użyłem „xlOr”, co spowoduje wybranie w filtrze zarówno „Finanse”, jak i „Sprzedaż” .

Przykład # 3 - Filtrowanie liczb za pomocą Autofiltru

Używając symbolu operatora „XlAnd” możemy również odfiltrować liczby. Załóżmy, że z kolumny Overtime chcesz odfiltrować wszystkie wartości> 1000, ale <3000.

Krok 1: Pierwszą  rzeczą jest zmiana pola z 5 na 4.

Kod:

 Sub AutoFilter_Example3 () Range („A1: E25”). Pole autofiltru: = 4 End Sub 

Krok 2: Kryterium 1 to> 1000.

Kod:

 Sub AutoFilter_Example3 () Range ("A1: E25"). Pole Autofiltru: = 4, Criteria1: = "> 1000", End Sub 

Step 3: Here we need to match both the criteria so use “xlAnd” as the operator.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, End Sub 

Step 4: Criteria 2 will <3000.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, Criteria2:="<3000" End Sub 

Now if you run this code manually or through the F5 key, it will filter out all the values from the Overtime column which are >1000 but <3000.

Example #4 – Filter from Different Columns using AutoFilter

In order to filter out data from different columns, we need to use a different process. Assume you want to filter out the “Finance” department and also you want to filter out Salary numbers which are >25000 but <40000.

You can use the below code does that.

Code:

 Sub AutoFilter_Example4()       With Range("A1:E25") .AutoFilter Field:=5, Criteria1:="Finance" .AutoFilter Field:=2, Criteria1:=">25000", Operator:=xlAnd, Criteria2:="<40000"       End With End Sub 

This will filter out two columns.

Run this code using the F5 key or you can run manually.

Things to Remember

  • Try different combinations under Operator to get the knowledge of VBA AutoFilter.
  • If you are not sure what to put in try using the macro recorder.
  • If you want to filter out text values then you need to supply them in double-quotes.
  • Use WITH statement to apply more than one column filter.