Excel VBA: Ako filtrovať pomocou viacerých kritérií v poli (7 spôsobov)

  • Zdieľajte To
Hugh West

Ak hľadáte spôsoby, ako filter s viacnásobným poľom kritérií v programe Excel VBA potom ste na správnom mieste. Filtrovanie veľkého súboru údajov na základe viacerých kritérií sa dá uľahčiť pomocou VBA kódy namiesto použitia bežnej funkcie programu Excel.

Poďme teda začať náš hlavný článok.

Stiahnite si pracovný zošit

Filter s viacerými kritériami.xlsm

7 spôsobov filtrovania pomocou viacerých kritérií v poli pomocou programu Excel VBA

V nasledujúcom súbore údajov máme niekoľko záznamov o známkach zodpovedajúcich menám študentov a ich identifikátorom. Tento súbor údajov sa pokúsime filtrovať na základe rôznych kritérií ako pole pomocou niektorých kódov.

Použili sme Microsoft Excel 365 verziu, môžete použiť aj iné verzie podľa vlastného uváženia.

Metóda 1: Filter s viacerými kritériami ako texty v poli

Tu sa pokúsime vyfiltrovať nasledujúci súbor údajov na základe Meno študenta stĺpec pre viacero kritérií obsahujúcich reťazce Emily , Daniel a Gabriel v poli.

Krok-01 :

➤ Prejdite na Vývojár Karta>> Visual Basic Možnosť.

Potom sa Editor jazyka Visual Basic sa otvorí.

➤ Prejdite na Vložte Karta>> Modul Možnosť.

Potom sa Modul sa vytvorí.

Krok-02 :

➤ Napíšte nasledujúci 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 

Tu sme deklarovali názvy hlavičiek v rozsahu B3:D3 v ktorom použijeme filter a Pole:=2 je číslo stĺpca tohto rozsahu, na základe ktorého vykonáme tento proces filtrovania.

Nakoniec sme nastavili kritériá ako pole na deklarovanie mien viacerých študentov, ako napr. Emily , Daniel a Gabriel .

➤ Tlač F5 .

Potom budete mať súbor údajov vyfiltrovaný podľa viacerých kritérií, aby sa zobrazili mená študentov a ich príslušné Identifikátory a Značky pre študentov Emily , Daniel a Gabriel .

Prečítajte si viac: Filtrovanie viacerých kritérií v programe Excel (4 vhodné spôsoby)

Metóda 2: Filtrovanie pomocou viacerých číselných kritérií v poli pomocou Excel VBA

Tu budeme filtrovať nasledujúci súbor údajov pre identifikátory 101135 , 101137 a 101138 pomocou týchto čísel ako viacerých kritérií v poli.

Kroky :

➤ sledovať Krok-01 z Metóda 1 .

➤ Napíšte nasledujúci 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 

Tu sme deklarovali názvy hlavičiek v rozsahu B3:D3 v ktorom použijeme filter a Pole:=2 je číslo stĺpca tohto rozsahu, na základe ktorého vykonáme tento proces filtrovania.

Nakoniec sme nastavili kritériá ako pole na deklarovanie identifikátorov viacerých študentov, ako napr. 101135 , 101137 a 101138 a vložili sme ich do úvodzoviek, aby sme ich špecifikovali ako reťazce, pretože Automatický filter bude fungovať len pre pole reťazcov.

➤ Tlač F5 .

Potom sa zobrazia mená a známky žiakov s identifikátormi 101135 , 101137 a 101138 .

Prečítajte si viac: VBA na získanie jedinečných hodnôt zo stĺpca do poľa v programe Excel (3 kritériá)

Metóda 3: Nastavenie viacerých kritérií v rozsahu na použitie ako pole

Tu sme uviedli kritériá v Zoznam stĺpec obsahujúci id 101134 , 101135 a 101136 na základe ktorých budeme vykonávať proces filtrovania.

Kroky :

➤ sledovať Krok-01 z Metóda 1 .

➤ Napíšte nasledujúci 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 

Tu sme vyhlásili. ID_range , k ako Variant a ID_range je pole, do ktorého sa ukladajú viaceré kritériá, a k je prírastok od dolnej hranice po hornú hranicu tohto poľa. Na určenie dolnej a hornej hranice sme použili Funkcia LBOUND a Funkcia UBOUND resp.

Stránka Cyklus FOR sa používa na konverziu iných hodnôt ako reťazcov v poli na reťazce pomocou Funkcia CStr Nakoniec sme toto pole použili ako Kritériá1 .

➤ Tlač F5 .

Potom sa zobrazia mená a známky žiakov s identifikátormi 101134 , 101135 a 101136 .

Prečítajte si viac: Filtrovanie rôznych stĺpcov podľa viacerých kritérií v programe Excel VBA

Podobné čítania

  • Ako filtrovať jedinečné hodnoty v programe Excel (8 jednoduchých spôsobov)
  • Vykonanie vlastného filtra v programe Excel (5 spôsobov)
  • Výpočet priemeru poľa pomocou VBA (makro, UDF a užívateľský formulár)
  • Skratka pre filter programu Excel (3 rýchle použitia s príkladmi)

Metóda 4: Použitie funkcií SPLIT a JOIN na vytvorenie poľa s viacerými kritériami

V tomto prípade použijeme nasledujúci zoznam v Zoznam stĺpec ako pole a na správne filtrovanie súboru údajov použijeme aj Funkcia SPLIT , Funkcia JOIN a Funkcia TRANSPOSE v VBA kód.

Kroky :

➤ sledovať Krok-01 z Metóda 1 .

➤ Napíšte nasledujúci 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 

Tu, TRANSPOSE prevedie 2D do poľa 1D pole inak Automatický filter nebude fungovať, PRIPOJIŤ SA K spojí jednotlivé hodnoty do poľa reťazcov a nakoniec, SPLIT rozdelí každý reťazec a poskytne ich samostatne ako kritériá na filtrovanie súboru údajov.

➤ Tlač F5 .

Nakoniec sa zobrazia mená a známky žiakov s identifikátormi 101134 , 101135 a 101136 .

Prečítajte si viac: Ako rozdeliť reťazec na pole v programe VBA (3 spôsoby)

Metóda 5: Filtrovanie pomocou viacerých kritérií v slučke pre pole pomocou VBA

V tejto časti budeme filtrovať nasledujúci súbor údajov v závislosti od Id študenta stĺpec pre viaceré kritériá uvedené v zozname Zoznam stĺpec.

Kroky :

➤ sledovať Krok-01 z Metóda 1 .

➤ Napíšte nasledujúci 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 

Tu sme vyhlásili. k ako Celé číslo , ID_range(100) ako String kde ID_range je pole, do ktorého sa uloží až 100 Na určenie hodnôt tohto poľa sme použili Cyklus FOR pre k z adresy 4 na 6 ako čísla riadkov Zoznam stĺpec a F je názov stĺpca.

Nakoniec sme toto pole použili ako Kritériá1 pre Automatický filter .

➤ Tlač F5 .

Nakoniec získate mená a známky študentov, ktorí majú ID 101134 , 101135 a 101136 .

Prečítajte si viac: Filtrovanie viacerých kritérií v programe Excel pomocou VBA (typy AND aj OR)

Metóda 6: Použitie pomenovaného rozsahu pre viacero kritérií

Tu sme uviedli niektoré mená študentov v Zoznam a pomenoval tento rozsah ako Študent Pomocou tohto pomenovaného rozsahu definujeme pole, ktoré bude obsahovať viacero kritérií pre Automatický filter funkcia.

Kroky :

➤ sledovať Krok-01 z Metóda 1 .

➤ Napíšte nasledujúci 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 

Tu sme vyhlásili. Student_range , k ako Variant a použil Funkcia TRANSPOSE na konverziu 2D pole pomenovaného rozsahu Študent do 1D a potom ho uložil do Student_range Potom sa používa ako Kritériá1 pre Automatický filter metóda.

➤ Tlač F5 .

Potom budete mať súbor údajov vyfiltrovaný podľa viacerých kritérií, aby sa zobrazili mená študentov a ich príslušné Identifikátory a Značky pre študentov Jefferson , Emily a Sara .

Súvisiaci obsah: VBA na transpozíciu poľa v programe Excel (3 metódy)

Metóda 7: Filtrovanie tabuľky s viacerými kritériami v poli

Tu máme tieto údaje Tabuľka ktorého meno je Tabuľka1 a používanie programu Excel VBA pokúsime sa túto tabuľku vyfiltrovať na základe mien Emily , Daniel a Gabriel ako viacero kritérií v poli.

Kroky :

➤ sledovať Krok-01 z Metóda 1 .

➤ Napíšte nasledujúci 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 

Tu, ListObjects("Table1") sa používa na definovanie tabuľky Tabuľka1 , Pole:=2 pre nastavenie druhého stĺpca tohto rozsahu ako základ procesu filtrovania a nakoniec sme definovali pole obsahujúce viacero názvov pre Kritériá1 .

➤ Tlač F5 .

Nakoniec budete mať súbor údajov vyfiltrovaný podľa viacerých kritérií, aby ste mohli zobraziť mená študentov a ich príslušné Identifikátory a Značky pre študentov Emily , Daniel a Gabriel .

Prečítajte si viac: Excel VBA: Filtrovanie tabuľky na základe hodnoty bunky (6 jednoduchých metód)

Praktická časť

Na precvičovanie sme vám poskytli Prax sekciu ako nižšie v hárku s názvom Prax . Prosím, urobte to sami.

Záver

V tomto článku sme sa pokúsili pokryť spôsoby filtrovania pomocou viacerých kritérií ako poľa pomocou aplikácie Excel VBA Dúfam, že vám to bude užitočné. Ak máte nejaké návrhy alebo otázky, neváhajte sa o ne podeliť v sekcii komentárov.

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.