Spis treści
W przypadku pracy z dużymi ilościami danych i konieczności ustawienia wielu filtrów jednocześnie, Zaawansowane filtrowanie w Excel Może być również zastosowany do czyszczenia danych poprzez usuwanie kopii. Podczas stosowania Filtr zaawansowany , VBA W tym tutorialu pokażemy jak zastosować VBA Filtr zaawansowany dla zakresu wielu kryteriów w Excel .
Pobierz Zeszyt ćwiczeń
Pobierz ten zeszyt ćwiczeń, aby ćwiczyć podczas czytania tego artykułu.
VBA Advanced Filter.xlsm5 Skutecznych metod dla VBA Zaawansowany filtr z wieloma kryteriami w zakresie w Excelu
W kolejnych rozdziałach omówimy 5 metody do wykorzystania VBA Filtr zaawansowany dla wielu kryteriów. Na początku może być potrzebna znajomość składni VBA Filtr zaawansowany .
VBA Advanced Filter Syntax:
- AdvancedFilter: odnosi się do obiektu zakresu. Możesz ustawić swój zakres, w którym chcesz zastosować filtr.
- Działanie: jest wymaganym argumentem, który ma dwie opcje, xlFilterInPlace lub xlFilterCopy . xlFilterInPlace służy do filtrowania wartości w miejscu, w którym znajduje się zbiór danych. xlFilterCopy służy do uzyskania wartości filtra w innej pożądanej lokalizacji.
- CriteriaRange: przedstawia kryteria, według których wartość będzie filtrowana.
- CopyToRange: to miejsce, w którym będziesz zapisywać wyniki filtrowania.
- Unikalne: jest argumentem opcjonalnym. Użyj Prawdziwe aby filtrować tylko unikalne wartości. W przeciwnym razie domyślnie jest traktowany jako Fałszywy .
Na poniższym obrazku znajduje się przykładowy zestaw danych, na którym możemy zastosować wszystkie filtry, które chcemy wykonać.
1) Zastosuj filtr zaawansowany VBA dla kryteriów OR w zakresie w Excelu
W pierwszej metodzie zastosujemy LUB kryteria z wykorzystaniem VBA Filtr zaawansowany Powiedzmy, że chcemy filtrować dane pod kątem nazwy produktu Cookies oraz Czekolada Aby zastosować LUB kryteria, powinieneś umieścić wartości w różnych wierszach. Aby wykonać zadanie, postępuj zgodnie z poniższymi krokami.
Krok 1:
- Naciśnij Alt + F11 aby otworzyć Makro VBA .
- Kliknij na Wkładka.
- Wybierz Moduł.
Krok 2:
- Następnie wklej następujące elementy VBA kod, aby zastosować OR.
Sub Apply_VBA_Advanced_Filter_for_OR_Criteria() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Ustaw lokalizację i zakres datase range and criteria range Set Dataset_Rng = Sheets("Sheet1").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet1").Range("B14:E16") 'Zastosuj filtr zaawansowany, aby przefiltrować zbiór danych przy użyciu kryteriówDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub
Krok 3:
- Następnie zapisz program i naciśnij F5 do uruchomienia.
- W związku z tym otrzymasz przefiltrowane wyniki, jak pokazano na poniższym obrazku.
Uwagi. Aby odwrócić proces lub usunąć całą pastę filtracyjną i uruchomić VBA program.
Sub Remove_All_Filter() On Error Resume Next 'polecenie usunięcia wszystkich filtrów, aby pokazać poprzedni zbiór danych ActiveSheet.ShowAllData End Sub
- W rezultacie otrzymasz poprzednią wersję swojego zestawu danych.
Czytaj więcej: Excel VBA Przykłady zaawansowanego filtra z kryteriami (6 kryteriów)
2) Wykonaj filtr zaawansowany VBA dla kryteriów AND w zakresie w Excelu
Podobnie jak w przypadku poprzedniej metody, teraz wykonamy VBA Zaawansowany filtr dla ORAZ kryteria. Powiedzmy, że chcemy poznać ciasteczka o cenie $0.65 jak pokazano na poniższym zrzucie ekranu. Do zastosowania LUB kryteria, powinieneś umieścić wartości w różnych kolumnach. Aby zastosować ORAZ kryteria, postępuj zgodnie z poniższymi instrukcjami.
Krok 1:
- Aby otworzyć Makro VBA , naciśnij Alt + F11
- Po otwarciu Makro VBA , wkleić VBA kody w nowym module.
Sub Apply_VBA_Advanced_Filter_for_AND_Criteria() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Ustaw lokalizację i zakres zakresu dataset range i criteria range Set Dataset_Rng = Sheets("Sheet2").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet2").Range("B14:E15") 'Zastosuj filtr zaawansowany do filtrowania zbioru danych przy użyciu kryteriówDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub
Krok 2:
- Naciśnij F5 aby uruchomić program po jego zapisaniu.
- Na koniec uzyskaj przefiltrowane wyniki.
Read More: VBA do kopiowania danych do innego arkusza z zaawansowanym filtrem w Excelu
3) Wykorzystanie zaawansowanego filtra VBA dla kryteriów OR z AND w zakresie w Excelu
Można również zastosować LUB i ORAZ kryteria w połączeniu. Na przykład, chcesz uzyskać wartości dla Cookies lub Czekolady , ale za Cookies, jest jeszcze jedno kryterium cena $0.65 Wykonaj poniższe procedury, aby to zrobić.
Krok 1:
- Wklej następujące elementy VBA kody po otwarciu Makro VBA .
Sub Apply_VBA_Advanced_Filter_for_OR_with_AND_Criteria() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Ustaw lokalizację i zakres zakresu dataset range i criteria range Set Dataset_Rng = Sheets("Sheet3").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet3").Range("B14:E16") 'Zastosuj filtr zaawansowany, aby przefiltrować zbiór danych przy użyciu kryteriów.Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub
Krok 2:
- Następnie należy najpierw zapisać program, naciskając F5 aby go uruchomić.
- W związku z tym, znajdziesz wartości z pewnymi ORAZ oraz OR.
Read More: Zastosuj filtr zaawansowany oparty na wielu kryteriach w jednej kolumnie w Excelu
Podobne Lektury:
- Zaawansowany filtr z wieloma kryteriami w Excelu (15 odpowiednich przykładów)
- Dynamiczny zaawansowany filtr Excel (VBA & Macro)
- Jak używać zaawansowanego filtra w VBA (przewodnik krok po kroku)
- Zaawansowany filtr z zakresem kryteriów w programie Excel (18 aplikacji)
- Excel Advanced Filter Not Working (2 Reasons & Solutions)
4. użycie zaawansowanego filtra VBA dla unikalnych wartości z wieloma kryteriami w Excelu
Ponadto, jeśli masz duplikaty w swoim zestawie danych, możesz je usunąć podczas filtrowania.Dodamy Wyjątkowa argument do Prawdziwe aby uzyskać tylko unikalne wartości i usunąć duplikaty. Postępuj zgodnie z przedstawionymi instrukcjami.
Krok 1:
- Po pierwsze, otwórz VBA Makro poprzez naciśnięcie Alt + F11.
- Wklej następujące elementy VBA kody w nowym module.
Sub Apply_VBA_Advanced_Filter_for_Unique_Values() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Ustaw lokalizację i zakres zakresu dataset range i criteria range Set Dataset_Rng = Sheets("Sheet4").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet4").Range("B14:E16") 'Zastosuj filtr zaawansowany do filtrowania zbioru danych przy użyciu kryteriówDataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng, Unique:=True End Sub
Krok 2:
- Następnie naciśnij F5 aby uruchomić program po zapisaniu.
- Dlatego uzyskasz wartości tylko dla unikalnych.
Czytaj więcej: Jak używać zaawansowanego filtra tylko dla unikalnych rekordów w Excelu
5. Wykonaj filtr zaawansowany VBA dla przypadku warunkowego
Oprócz poprzednich metod, można również zastosować warunki za pomocą formuł. Na przykład, chcemy znaleźć Ceny ogółem które są większe niż $100 Aby to osiągnąć, wystarczy wykonać te kroki.
Krok 1:
- Po pierwsze, aby otworzyć Makro VBA , naciśnij Alt + F11 .
- Wybierz nowy Moduł i wkleić Kody VBA .
Sub Apply_VBA_Advanced_Filter_for_Formula() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set the location and range of dataset range and criteria range Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") 'Apply Advanced Filter to filter the dataset using the criteria.Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub
Krok 2:
- Po drugie, zapisz program i naciśnij przycisk F5 aby zobaczyć wyniki.
Uwagi. Dodatkowo możesz uzyskać wyniki w korzystnym miejscu, czy to w nowym zakresie, czy w nowym arkuszu, stosując xlFilterCopy Akcja. Po prostu, wklej VBA kody i uruchomić je, aby uzyskać wyniki w Plansza6 w zasięgu B4:E11 .
'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Ustaw lokalizację i zakres dataset range i criteria range Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") 'Zastosuj Advanced Filter, aby przefiltrować zbiór danych za pomocą kryteriów Dataset_Rng.AdvancedFilter Action:=xlFilterCopy,CriteriaRange:=Criteria_Rng, CopyToRange:=Sheets("Sheet6").Range("B4:E11") End Sub
- W rezultacie zobacz wynik końcowy w nowym arkuszu 'Arkusz6' .
Read More: Jak używać zaawansowanego filtra, jeśli zakres kryteriów zawiera tekst w Excelu
Wniosek
Podsumowując, mam nadzieję, że teraz rozumiesz jak używać VBA zaawansowany filtr w Excel do filtrowania wielu zakresów kryteriów. Wszystkie te metody powinny być wykorzystywane do nauki i praktyki z danymi. Przejrzyj podręcznik do ćwiczeń i wykorzystaj to, czego się nauczyłeś. Dzięki Twojemu istotnemu wsparciu możemy kontynuować prezentowanie seminariów takich jak to.
Jeśli masz jakiekolwiek pytania, nie wahaj się z nami skontaktować. Daj nam znać, co myślisz w sekcji komentarzy poniżej.
Na stronie Exceldemy Pracownicy odpowiedzą na Twoje zapytania tak szybko, jak to możliwe.
Zostań z nami i ucz się dalej.