Excel VBA: Kuinka suodattaa useita kriteerejä Array-joukossa (7 tapaa)

  • Jaa Tämä
Hugh West

Jos etsit tapoja suodatin useiden kriteerien avulla Excelissä VBA Suurten tietokokonaisuuksien suodattaminen useiden kriteerien perusteella voidaan tehdä helpommaksi käyttämällä VBA koodit sen sijaan, että käyttäisit Excelin tavanomaista ominaisuutta.

Aloitetaan siis pääartikkelimme.

Lataa työkirja

Suodata useilla kriteereillä.xlsm

7 tapaa suodattaa useita kriteerejä Array Excel VBA: n avulla

Seuraavassa tietokokonaisuudessa on joitakin merkintöjä koskevia tietueita, jotka vastaavat opiskelijoiden nimiä ja tunnuksia. Yritämme suodattaa tätä tietokokonaisuutta eri kriteerien perusteella array-muodossa käyttäen joitakin koodeja.

Olemme käyttäneet Microsoft Excel 365 versiota tässä, voit käyttää mitä tahansa muita versioita haluamallasi tavalla.

Menetelmä-1: Suodata useilla kriteereillä tekstien avulla array-joukossa

Seuraavassa yritämme suodattaa seuraavan tietokokonaisuuden perustuen Opiskelijan nimi sarake useille kriteereille, jotka sisältävät merkkijonoja Emily , Daniel ja Gabriel sarjassa.

Step-01 :

➤ Mene osoitteeseen Kehittäjä Tab>> Visual Basic Vaihtoehto.

Sitten Visual Basic Editor avautuu.

➤ Mene osoitteeseen Lisää Tab>> Moduuli Vaihtoehto.

Sen jälkeen Moduuli luodaan.

Step-02 :

➤ Kirjoita seuraava koodi

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

Tässä ilmoitamme otsikon nimet alueella B3:D3 jossa sovellamme suodatinta ja Kenttä:=2 on tämän alueen sarakkeen numero, jonka perusteella suodatusprosessi tehdään.

Lopuksi olemme asettaneet kriteereiksi joukon, jolla voidaan ilmoittaa useiden oppilaiden nimet, kuten esim. Emily , Daniel ja Gabriel .

➤ Lehdistö F5 .

Tämän jälkeen tietokokonaisuus suodatetaan useilla kriteereillä, jotta näytetään oppilaiden nimet ja vastaavat tiedot. Tunnukset ja Merkit opiskelijoille Emily , Daniel ja Gabriel .

Lue lisää: Suodata useita kriteerejä Excelissä (4 sopivaa tapaa)

Menetelmä-2: Suodata useita numerokriteerejä Array Excel VBA: n avulla

Seuraavassa suodatetaan seuraavat tunnukset seuraavasta tietokokonaisuudesta. 101135 , 101137 ja 101138 käyttämällä näitä numeroita useina kriteereinä matriisissa.

Askeleet :

➤ Seuraa Step-01 of Menetelmä-1 .

➤ Kirjoita seuraava koodi

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

Tässä ilmoitamme otsikon nimet alueella B3:D3 jossa sovellamme suodatinta ja Kenttä:=2 on tämän alueen sarakkeen numero, jonka perusteella suodatusprosessi tehdään.

Lopuksi olemme asettaneet kriteereiksi joukon, jolla voidaan ilmoittaa useiden oppilaiden tunnukset, kuten esimerkiksi seuraavasti 101135 , 101137 ja 101138 ja olemme laittaneet ne hakasulkujen sisään määrittääksemme ne merkkijonoina, koska AutoFilter toimii vain merkkijonojen joukolle.

➤ Lehdistö F5 .

Tämän jälkeen saat niiden oppilaiden nimet ja arvosanat, joilla on tunnukset. 101135 , 101137 ja 101138 .

Lue lisää: VBA hankkia ainutlaatuisia arvoja sarakkeesta Excel-monistoon (3 kriteeriä)

Menetelmä-3: Useiden kriteerien asettaminen alueeseen, jota voidaan käyttää arkkina.

Olemme luetelleet kriteerit seuraavassa Luettelo sarake, joka sisältää tunnukset 101134 , 101135 ja 101136 jonka perusteella teemme suodatusprosessin.

Askeleet :

➤ Seuraa Step-01 of Menetelmä-1 .

➤ Kirjoita seuraava koodi

 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 

Tässä olemme ilmoittaneet ID_range , k kuten Vaihtoehto ja ID_range on joukko, johon tallennetaan useita kriteerejä, ja k on lisäys, joka ulottuu tämän matriisin alarajasta ylärajaan. Ala- ja ylärajan määrittämiseen käytimme funktiota nimeltä LBOUND-toiminto ja UBOUND-toiminto vastaavasti.

The FOR-silmukka käytetään muunnettaessa muut arvot kuin merkkijonot matriisissa merkkijonoiksi apuna käyttäen CStr-toiminto . Lopuksi, olemme käyttäneet tätä array kuin Perusteet1 .

➤ Lehdistö F5 .

Sen jälkeen saat niiden oppilaiden nimet ja arvosanat, joilla on tunnukset. 101134 , 101135 ja 101136 .

Lue lisää: Suodata eri sarake useilla kriteereillä Excel VBA: ssa

Samanlaisia lukemia

  • Miten suodattaa ainutlaatuisia arvoja Excelissä (8 helppoa tapaa)
  • Suorita mukautettu suodatin Excelissä (5 tapaa)
  • Lasketaan keskiarvo Array VBA:lla (makro, UDF ja UserForm).
  • Excel-suodattimen pikakuvake (3 nopeaa käyttöä esimerkkien kanssa)

Menetelmä-4: SPLIT- ja JOIN-funktioiden käyttäminen useiden kriteerien sisältävän Array-joukon luomiseen

Tässä yhteydessä käytämme seuraavaa luetteloa, joka on tarkoitettu Luettelo saraketta array-muodossa, ja jotta voimme suodattaa tietokokonaisuuden oikein, käytämme myös saraketta SPLIT-toiminto , JOIN-toiminto ja TRANSPOSE-toiminto in a VBA koodi.

Askeleet :

➤ Seuraa Step-01 of Menetelmä-1 .

➤ Kirjoita seuraava koodi

 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 

Tässä, TRANSPOSE muuntaa 2D matriisiin 1D array muuten AutoFilter ei toimi, JOIN liittää jokaisen arvon merkkijonomassaksi, ja lopuksi, SPLIT jaottelee jokaisen merkkijonon, jotta ne voidaan syöttää erikseen kriteereinä tietokokonaisuuden suodatusta varten.

➤ Lehdistö F5 .

Lopuksi saat niiden opiskelijoiden nimet ja arvosanat, joilla on tunnukset. 101134 , 101135 ja 101136 .

Lue lisää: Merkkijonon jakaminen monisteeksi VBA:ssa (3 tapaa)

Menetelmä-5: Suodata useilla kriteereillä silmukassa, jossa on VBA:n avulla muodostettu joukko

Tässä jaksossa suodatamme seuraavan tietokokonaisuuden seuraaviin tietoihin seuraavien tekijöiden perusteella Opiskelijan tunnus sarakkeessa useita kriteerejä, jotka on lueteltu Luettelo sarake.

Portaat :

➤ Seuraa Step-01 of Menetelmä-1 .

➤ Kirjoita seuraava koodi

 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 

Tässä olemme ilmoittaneet k kuten Kokonaisluku , ID_range(100) kuten merkkijono jossa ID_range on joukko, johon tallennetaan enintään 100 arvot. Määrittääksemme arvot tälle joukolle tässä olemme käyttäneet työkalua FOR-silmukka osoitteessa k osoitteesta 4 osoitteeseen 6 rivien numeroina Luettelo sarake ja F on sarakkeen nimi.

Lopuksi olemme käyttäneet tätä joukkoa Perusteet1 osoitteessa AutoFilter .

➤ Lehdistö F5 .

Lopulta saat niiden oppilaiden nimet ja arvosanat, joilla on id:t. 101134 , 101135 ja 101136 .

Lue lisää: Suodata useita kriteerejä Excelissä VBA: n avulla (sekä AND- että OR-tyypit)

Menetelmä-6: Nimetyn alueen käyttäminen useille kriteereille

Tässä on lueteltu joitakin opiskelijoiden nimiä, jotka ovat Luettelo sarakkeeseen ja nimesi tämän alueen nimellä Opiskelija Tämän nimetyn alueen avulla määrittelemme matriisin, joka sisältää useita kriteerejä. AutoFilter ominaisuus.

Askeleet :

➤ Seuraa Step-01 of Menetelmä-1 .

➤ Kirjoita seuraava koodi

 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 

Tässä olemme ilmoittaneet Student_range , k kuin Vaihtoehto ja käytti TRANSPOSE-toiminto muuntaa 2D nimetyn alueen joukko Opiskelija a:ksi 1D array ja sitten tallennetaan se Student_range Sitten sitä käytetään Perusteet1 varten AutoFilter menetelmä.

➤ Lehdistö F5 .

Tämän jälkeen tietokokonaisuus suodatetaan useilla kriteereillä, jotta näytetään oppilaiden nimet ja vastaavat tiedot. Tunnukset ja Merkit opiskelijoille Jefferson , Emily ja Sara .

Aiheeseen liittyvä sisältö: VBA transponoida Array Excelissä (3 menetelmää)

Menetelmä-7: Taulukon suodattaminen useilla kriteereillä array-joukossa

Tässä tapauksessa meillä on seuraavat tiedot Taulukko jonka nimi on Taulukko1 ja Excelin avulla VBA yritämme suodattaa taulukon nimien perusteella. Emily , Daniel ja Gabriel useina kriteereinä joukossa.

Askeleet :

➤ Seuraa Step-01 of Menetelmä-1 .

➤ Kirjoita seuraava koodi

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

Tässä, ListObjects("Table1") käytetään taulukon määrittelyyn Taulukko1 , Kenttä:=2 tämän alueen toisen sarakkeen määrittämiseksi suodatusprosessin perustaksi, ja lopuksi olemme määritelleet joukon, joka sisältää useita nimiä seuraaville tiedostoille Perusteet1 .

➤ Lehdistö F5 .

Lopulta saat tietokokonaisuuden suodatettua useiden kriteerien perusteella siten, että näytetään oppilaiden nimet ja vastaavat tiedot. Tunnukset ja Merkit opiskelijoille Emily , Daniel ja Gabriel .

Lue lisää: Excel VBA: Suodata taulukko solun arvon perusteella (6 helppoa menetelmää)

Harjoitusosio

Jotta voit harjoitella itse, olemme toimittaneet Harjoitus osiossa alla olevan kaltaisesti arkissa nimeltä Harjoitus Tee se itse.

Päätelmä

Tässä artikkelissa yritimme käsitellä tapoja suodattaa useita kriteerejä matriisina Excelin avulla. VBA Jos sinulla on ehdotuksia tai kysymyksiä, voit jakaa ne kommenttiosioon.

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.