Excel VBA: Jak filtrovat pomocí více kritérií v poli (7 způsobů)

  • Sdílet Toto
Hugh West

Pokud hledáte způsoby, jak filtr s více kritérii v aplikaci Excel VBA Pak jste na správném místě. Filtrování rozsáhlého souboru dat na základě více kritérií lze usnadnit pomocí nástroje VBA kódů namísto použití běžné funkce aplikace Excel.

Začněme tedy naším hlavním článkem.

Stáhnout pracovní sešit

Filtr s více kritérii.xlsm

7 způsobů filtrování pomocí více kritérií v poli pomocí aplikace Excel VBA

V následujícím souboru dat máme několik záznamů o známkách odpovídajících jménům studentů a jejich id. Tento soubor dat se pokusíme filtrovat na základě různých kritérií jako pole pomocí některých kódů.

Použili jsme Microsoft Excel 365 zde, můžete použít jakoukoli jinou verzi podle toho, jak vám to vyhovuje.

Metoda-1: Filtrování pomocí více kritérií jako textů v poli

Zde se pokusíme vyfiltrovat následující soubor dat na základě. Jméno studenta sloupec pro vícenásobná kritéria obsahující řetězce Emily , Daniel a Gabriel v poli.

Krok-01 :

➤ Přejděte na Vývojář Karta>> Visual Basic Možnost.

Poté se Editor jazyka Visual Basic se otevře.

➤ Přejděte na Vložte Karta>> Modul Možnost.

Poté se Modul bude vytvořen.

Krok-02 :

➤ Napište následující kód

 Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Zde jsme deklarovali názvy záhlaví v rozsahu B3:D3 ve kterém použijeme filtr a Pole:=2 je číslo sloupce tohoto rozsahu, na jehož základě provedeme filtrování.

Nakonec jsme nastavili kritéria jako pole pro deklarování více jmen studentů, např. Emily , Daniel a Gabriel .

➤ Tisk F5 .

Pak budete mít datový soubor filtrovaný podle více kritérií, abyste mohli zobrazit jména studentů a jim odpovídající údaje. Ids a Marks pro studenty Emily , Daniel a Gabriel .

Přečtěte si více: Filtrování více kritérií v aplikaci Excel (4 vhodné způsoby)

Metoda-2: Filtrování pomocí více číselných kritérií v poli pomocí Excel VBA

Zde budeme filtrovat následující datovou sadu pro id. 101135 , 101137 a 101138 pomocí těchto čísel jako vícenásobných kritérií v poli.

Kroky :

➤ Sledovat Krok-01 z Metoda-1 .

➤ Napište následující kód

 Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub 

Zde jsme deklarovali názvy záhlaví v rozsahu B3:D3 ve kterém použijeme filtr a Pole:=2 je číslo sloupce tohoto rozsahu, na jehož základě provedeme filtrování.

Nakonec jsme nastavili kritéria jako pole pro deklarování identifikačních čísel více studentů, např. 101135 , 101137 a 101138 a vložili jsme je do uvozovek, abychom je specifikovali jako řetězce, protože Automatický filtr bude fungovat pouze pro pole řetězců.

➤ Tisk F5 .

Poté se zobrazí jména a známky studentů, kteří mají ID. 101135 , 101137 a 101138 .

Přečtěte si více: Získání jedinečných hodnot ze sloupce do pole v aplikaci Excel pomocí VBA (3 kritéria)

Metoda 3: Nastavení více kritérií v rozsahu pro použití jako pole

Zde jsme uvedli kritéria v Seznam sloupec obsahující id 101134 , 101135 a 101136 na jejichž základě provedeme proces filtrování.

Kroky :

➤ Sledovat Krok-01 z Metoda-1 .

➤ Napište následující kód

 Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6")) For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Zde jsme prohlásili. ID_range , k jako Varianta a ID_range je pole, do kterého se ukládá více kritérií, a k je přírůstek od dolní hranice po horní hranici tohoto pole. Pro určení dolní a horní hranice jsme použili příkaz Funkce LBOUND a Funkce UBOUND resp.

Na stránkách Smyčka FOR slouží k převodu jiných hodnot než řetězců v poli na řetězce pomocí funkce Funkce CStr . Nakonec jsme toto pole použili jako Kritéria1 .

➤ Tisk F5 .

Poté se zobrazí jména a známky studentů, kteří mají ID. 101134 , 101135 a 101136 .

Přečtěte si více: Filtrování různých sloupců podle více kritérií v aplikaci Excel VBA

Podobná čtení

  • Jak filtrovat jedinečné hodnoty v aplikaci Excel (8 snadných způsobů)
  • Provedení vlastního filtru v aplikaci Excel (5 způsobů)
  • Výpočet průměru pole pomocí VBA (Makro, UDF a UserForm)
  • Zkratka pro filtr Excelu (3 rychlá použití s příklady)

Metoda 4: Použití funkcí SPLIT a JOIN pro vytvoření pole s více kritérii

V tomto případě použijeme následující seznam. Seznam sloupec jako pole a pro správné filtrování datové sady použijeme také sloupec Funkce SPLIT , Funkce JOIN a Funkce TRANSPOSE v a VBA kód.

Kroky :

➤ Sledovat Krok-01 z Metoda-1 .

➤ Napište následující kód

 Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub 

Zde, TRANSPOSE převede 2D do pole 1D pole jinak Automatický filtr nebude fungovat, PŘIPOJIT SE K spojí jednotlivé hodnoty do pole řetězců a nakonec, SPLIT rozdělí jednotlivé řetězce a zadá je samostatně jako kritéria pro filtrování souboru dat.

➤ Tisk F5 .

Nakonec se zobrazí jména a známky studentů s ID. 101134 , 101135 a 101136 .

Přečtěte si více: Jak rozdělit řetězec na pole v prostředí VBA (3 způsoby)

Metoda-5: Filtrování pomocí více kritérií ve smyčce pro pole pomocí VBA

V této části budeme filtrovat následující soubor dat v závislosti na tom. Id studenta sloupec pro více kritérií uvedených v seznamu Seznam sloupec.

Kroky :

➤ Sledovat Krok-01 z Metoda-1 .

➤ Napište následující kód

 Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Zde jsme prohlásili. k jako Celé číslo , ID_range(100) jako Řetězec kde ID_range je pole, do kterého lze uložit až 100 Pro určení hodnot tohoto pole jsme zde použili příkaz Smyčka FOR pro k z 4 na 6 jako čísla řádků Seznam sloupec a F je název sloupce.

Nakonec jsme toto pole použili jako Kritéria1 pro Automatický filtr .

➤ Tisk F5 .

Nakonec získáte jména a známky studentů, kteří mají ID. 101134 , 101135 a 101136 .

Přečtěte si více: Filtrování více kritérií v aplikaci Excel pomocí VBA (typy AND i OR)

Metoda-6: Použití pojmenovaného rozsahu pro více kritérií

Zde jsme uvedli některá jména studentů v programu Seznam a pojmenoval tento rozsah jako Student . Pomocí tohoto pojmenovaného rozsahu definujeme pole, které bude obsahovat více kritérií pro Automatický filtr funkce.

Kroky :

➤ Sledovat Krok-01 z Metoda-1 .

➤ Napište následující kód

 Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub 

Zde jsme prohlásili. Student_range , k jako Varianta a použil Funkce TRANSPOSE převést 2D pole pojmenovaného rozsahu Student do 1D a poté je uložil do Student_range . Pak se používá jako Kritéria1 pro Automatický filtr metoda.

➤ Tisk F5 .

Pak budete mít datový soubor filtrovaný podle více kritérií, abyste mohli zobrazit jména studentů a jim odpovídající údaje. Ids a Marks pro studenty Jefferson , Emily a Sara .

Související obsah: Transpozice pole v aplikaci Excel pomocí jazyka VBA (3 metody)

Metoda-7: Filtrování tabulky s více kritérii v poli

Zde máme následující údaje Tabulka jehož jméno je Tabulka1 a použití aplikace Excel VBA pokusíme se tuto tabulku filtrovat na základě jmen. Emily , Daniel a Gabriel jako více kritérií v poli.

Kroky :

➤ Sledovat Krok-01 z Metoda-1 .

➤ Napište následující kód

 Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Zde, ListObjects("Table1") se používá pro definici tabulky Tabulka1 , Pole:=2 pro nastavení druhého sloupce tohoto rozsahu jako základu procesu filtrování a nakonec jsme definovali pole obsahující více jmen pro Kritéria1 .

➤ Tisk F5 .

Nakonec budete mít datovou sadu vyfiltrovanou podle více kritérií, abyste mohli zobrazit jména studentů a jim odpovídající údaje. Ids a Marks pro studenty Emily , Daniel a Gabriel .

Přečtěte si více: Excel VBA: Filtrování tabulky na základě hodnoty buňky (6 snadných metod)

Praktická část

Pro samostatné cvičení jsme připravili Cvičení sekce jako níže v listu s názvem Cvičení . Udělejte to prosím sami.

Závěr

V tomto článku jsme se pokusili popsat způsoby filtrování pomocí více kritérií jako pole pomocí aplikace Excel. VBA Doufám, že vám to bude užitečné. Pokud máte nějaké návrhy nebo dotazy, neváhejte se o ně podělit v sekci komentářů.

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.