Excel VBA: Kuidas filtreerida mitme kriteeriumi abil massiivi (7 võimalust)

  • Jaga Seda
Hugh West

Kui otsite võimalusi, kuidas filter mitme kriteeriumi massiiviga Excelis VBA , siis olete õiges kohas. Suure andmekogumi filtreerimist mitme kriteeriumi alusel saab lihtsamaks teha, kui kasutada VBA koodid, mitte kasutada Exceli tavapärast funktsiooni.

Niisiis, alustame meie põhilist artiklit.

Lae alla töövihik

Filter mitme kriteeriumiga.xlsm

7 viisi, kuidas filtreerida mitme kriteeriumiga massiivis Exceli VBA abil

Järgnevas andmestikus on meil mõned kirjed õpilaste nimele ja nende id-dele vastavate hinnete kohta. Proovime seda andmestikku filtreerida erinevate kriteeriumide alusel massiivi kujul, kasutades mõningaid koode.

Me oleme kasutanud Microsoft Excel 365 versiooni siin, võite kasutada mis tahes muid versioone vastavalt oma mugavusele.

Meetod-1: Filter mitme kriteeriumiga kui tekstid massiivis

Siinkohal püüame filtreerida järgmist andmestikku, mis põhineb Õpilase nimi veerg mitme kriteeriumi jaoks, mis sisaldavad stringid Emily , Daniel ja Gabriel massiivis.

Step-01 :

➤ Minge Arendaja Tab>> Visual Basic Võimalus.

Siis on Visual Basic toimetaja avaneb.

➤ Minge Sisesta Tab>> Moodul Võimalus.

Pärast seda on Moodul luuakse.

Step-02 :

➤ Kirjutage järgmine kood

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

Siin deklareerisime päise nimed vahemikus B3:D3 milles me rakendame filtrit ja Väli:=2 on selle vahemiku veeru number, mille alusel me seda filtreerimisprotsessi teeme.

Lõpuks oleme määranud kriteeriumid massiivi, et deklareerida mitme õpilase nimed, näiteks Emily , Daniel ja Gabriel .

➤ Press F5 .

Seejärel saate andmekogumi filtreerida mitme kriteeriumi alusel, et näidata õpilaste nimesid ja vastavaid Ids ja Marks õpilastele Emily , Daniel ja Gabriel .

Loe edasi: Mitme kriteeriumi filtreerimine Excelis (4 sobivat viisi)

Meetod-2: Filtreerimine mitme arvukriteeriumiga massiivi abil Exceli VBA abil

Siin me filtreerime allapoole järgmist andmekogumit ID-de jaoks 101135 , 101137 ja 101138 kasutades neid numbreid mitme kriteeriumina massiivis.

Sammud :

➤ Jälgi Step-01 aadressilt Meetod-1 .

➤ Kirjutage järgmine kood

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

Siin deklareerisime päise nimed vahemikus B3:D3 milles me rakendame filtrit ja Väli:=2 on selle vahemiku veeru number, mille alusel me seda filtreerimisprotsessi teeme.

Lõpuks oleme määranud kriteeriumid massiivi, et deklareerida mitme õpilase id-d, näiteks 101135 , 101137 ja 101138 ja me oleme pannud need pööratud komade sisse, et täpsustada neid stringidena, sest AutoFilter töötab ainult stringide massiivi puhul.

➤ Press F5 .

Pärast seda saate id-dega õpilaste nimed ja hinded. 101135 , 101137 ja 101138 .

Loe edasi: VBA, et saada unikaalsed väärtused veerust Exceli massiivi (3 kriteeriumi)

Meetod-3: Mitme kriteeriumi määramine vahemikus kasutamiseks massiivi kujul

Siinkohal oleme loetletud kriteeriumid Loetelu veerg, mis sisaldab tunnuseid 101134 , 101135 ja 101136 mille alusel me teeme oma filtreerimisprotsessi.

Sammud :

➤ Jälgi Step-01 aadressilt Meetod-1 .

➤ Kirjutage järgmine kood

 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 

Siinkohal oleme deklareerinud ID_range , k nagu Variant ja ID_range on massiivi, mis salvestab mitu kriteeriumi, ja k on selle massiivi alumisest piirist kuni ülemise piirini ulatuv juurdekasv. Alumise ja ülemise piiri omamiseks kasutasime funktsiooni LBOUND funktsioon ja UBOUND funktsioon vastavalt.

The FOR tsükkel kasutatakse massiivis olevate muude väärtuste kui stringide teisendamiseks stringideks, kasutades selleks funktsiooni CStr funktsioon Lõpuks oleme kasutanud seda massiivi kui Kriteeriumid1 .

➤ Press F5 .

Pärast seda saate nende õpilaste nimed ja hinded, kellel on ID-d. 101134 , 101135 ja 101136 .

Loe edasi: Erinevate veergude filtreerimine mitme kriteeriumi järgi Excel VBAs

Sarnased lugemised

  • Kuidas filtreerida unikaalseid väärtusi Excelis (8 lihtsat viisi)
  • Kohandatud filtri tegemine Excelis (5 võimalust)
  • Arvutage VBA abil massiivi keskmist (makro, UDF ja UserForm)
  • Exceli filtri otsetee (3 kiiret kasutust koos näidetega)

Meetod-4: SPLIT ja JOIN funktsioonide kasutamine mitme kriteeriumiga massiivi loomiseks

Siinkohal kasutame järgmist nimekirja Loetelu veergu massiivi ja andmekogumi nõuetekohaseks filtreerimiseks kasutame ka veergu SPLIT funktsioon , JOIN funktsioon ja TRANSPOSE funktsioon aastal VBA kood.

Sammud :

➤ Jälgi Step-01 aadressilt Meetod-1 .

➤ Kirjutage järgmine kood

 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 

Siin, TRANSPOSE teisendab 2D massiivi 1D muidu massiivi AutoFilter ei tööta, JOIN ühendab kõik väärtused stringide massiivi ja lõpuks, SPLIT jaotab iga stringi, et anda sisend neile eraldi kriteeriumid andmekogumi filtreerimiseks.

➤ Press F5 .

Lõpuks saate nende õpilaste nimed ja hinded, kellel on ID-d. 101134 , 101135 ja 101136 .

Loe edasi: Kuidas jagada stringi VBA-s massiiviks (3 võimalust)

Meetod-5: Mitme kriteeriumiga filtreerimine VBA-ga voogude tsükli jaoks

Selles jaotises filtreerime järgmise andmekogumi sõltuvalt sellest, kas Üliõpilase ID veergu mitme kriteeriumi puhul, nagu on loetletud Loetelu veerus.

Sammud :

➤ Jälgi Step-01 aadressilt Meetod-1 .

➤ Kirjutage järgmine kood

 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 

Siinkohal oleme deklareerinud k nagu Tervearvuline , ID_range(100) nagu String kus ID_range on massiivi, mis salvestab kuni 100 väärtused. Selle massiivi väärtuste määramiseks siinkohal oleme kasutanud FOR tsükkel . k aadressilt 4 aadressile 6 kui rea numbrid Loetelu veerg ja F on veeru nimi.

Lõpuks oleme kasutanud seda massiivi kui Kriteeriumid1 . AutoFilter .

➤ Press F5 .

Lõpuks saate nende õpilaste nimed ja hinded, kellel on ID-d. 101134 , 101135 ja 101136 .

Loe edasi: Mitme kriteeriumi filtreerimine Excelis VBAga (nii AND- kui ka OR-tüübid)

Meetod-6: Mitme kriteeriumi jaoks nimelise vahemiku kasutamine

Siin on loetletud mõned õpilaste nimed, kes on kantud Loetelu veergu ja nimetas selle vahemiku Õpilane Selle nimelise vahemiku abil määratleme massiivi, mis sisaldab mitmeid kriteeriume, et AutoFilter funktsioon.

Sammud :

➤ Jälgi Step-01 aadressilt Meetod-1 .

➤ Kirjutage järgmine kood

 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 

Siinkohal oleme deklareerinud Student_range , k kui Variant ja kasutas TRANSPOSE funktsioon teisendada 2D nimetatud vahemiku massiivi Õpilane arvesse 1D massiivi ja seejärel salvestatakse see Student_range Seejärel kasutatakse seda kui Kriteeriumid1 jaoks AutoFilter meetod.

➤ Press F5 .

Seejärel saate andmekogumi filtreerida mitme kriteeriumi alusel, et näidata õpilaste nimesid ja vastavaid Ids ja Marks õpilastele Jefferson , Emily ja Sara .

Seotud sisu: VBA Exceli massiivi transponeerimiseks (3 meetodit)

Meetod-7: Filtreeri tabelit mitme kriteeriumiga massiivi abil

Siin on meil järgmised andmed Tabel kelle nimi on Tabel1 ja kasutades Excelit VBA püüame filtreerida seda tabelit nimede põhjal alla. Emily , Daniel ja Gabriel kui mitu kriteeriumi massiivi.

Sammud :

➤ Jälgi Step-01 aadressilt Meetod-1 .

➤ Kirjutage järgmine kood

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

Siin, ListObjects("Table1") kasutatakse tabeli määratlemiseks Tabel1 , Väli:=2 selle vahemiku teise veeru seadistamiseks filtreerimisprotsessi alusena ja lõpuks oleme määratlenud massiivi, mis sisaldab mitmeid nimesid jaoks Kriteeriumid1 .

➤ Press F5 .

Lõpuks saate andmekogumi filtreerida mitme kriteeriumi alusel, et näidata õpilaste nimesid ja vastavaid Ids ja Marks õpilastele Emily , Daniel ja Gabriel .

Loe edasi: Excel VBA: filtreeri tabelit lahtri väärtuse alusel (6 lihtsat meetodit)

Praktika sektsioon

Selleks, et ise harjutada, on meil olemas Praktika lõik nagu allpool lehel nimega Praktika Palun tehke seda ise.

Kokkuvõte

Selles artiklis püüdsime katta, kuidas filtreerida mitme kriteeriumiga massiivi abil Exceli abil. VBA lihtsalt. Loodan, et see on teile kasulik. Kui teil on ettepanekuid või küsimusi, jagage neid julgelt kommentaaride sektsioonis.

Hugh West on suurte kogemustega Exceli koolitaja ja analüütik, kellel on selles valdkonnas üle 10-aastane kogemus. Tal on raamatupidamise ja rahanduse bakalaureusekraad ning ärijuhtimise magistrikraad. Hugh’l on kirg õpetamise vastu ning ta on välja töötanud ainulaadse õpetamisviisi, mida on lihtne järgida ja mõista. Tema Exceli ekspertteadmised on aidanud tuhandetel õpilastel ja spetsialistidel üle maailma oma oskusi parandada ja karjääris silma paista. Oma ajaveebi kaudu jagab Hugh oma teadmisi maailmaga, pakkudes tasuta Exceli õpetusi ja veebikoolitusi, mis aitavad üksikisikutel ja ettevõtetel oma potentsiaali täielikult ära kasutada.