Excel VBA: Kā filtrēt ar vairākiem kritērijiem masīvā (7 veidi)

  • Dalīties Ar Šo
Hugh West

Ja meklējat veidus, kā filtrs ar vairāku kritēriju masīvu programmā Excel VBA , tad atrodaties īstajā vietā. Lielas datu kopas filtrēšanu, pamatojoties uz vairākiem kritērijiem, var atvieglot, izmantojot lietojumprogrammu VBA kodus, nevis izmantojot parasto Excel funkciju.

Sāksim mūsu galveno rakstu.

Lejupielādēt darbgrāmatu

Filtrēšana ar vairākiem kritērijiem.xlsm

7 veidi, kā filtrēt ar vairākiem kritērijiem masīvā, izmantojot Excel VBA

Šajā datu kopā mums ir daži ieraksti ar atzīmēm, kas atbilst skolēnu vārdiem un viņu identifikatoriem. Mēs mēģināsim filtrēt šo datu kopu, pamatojoties uz dažādiem kritērijiem kā masīvu, izmantojot dažus kodus.

Mēs esam izmantojuši Microsoft Excel 365 versiju šeit, varat izmantot jebkuru citu versiju atbilstoši jūsu ērtībām.

1. metode: Filtrēšana ar vairākiem kritērijiem kā tekstiem masīvā

Šeit mēs mēģināsim filtrēt šādu datu kopu, pamatojoties uz Skolēna vārds sleja vairākiem kritērijiem, kas satur virknes Emīlija , Daniels , un Gabriel masīvā.

Solis-01 :

➤ Dodieties uz Izstrādātājs Cilne>> Visual Basic Iespēja.

Tad Visual Basic redaktors atvērsies.

➤ Dodieties uz Ievietot Cilne>> Modulis Iespēja.

Pēc tam Modulis tiks izveidots.

Solis-02 :

➤ Ierakstiet šādu kodu

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

Šeit mēs deklarējām galvenes nosaukumus diapazonā B3: D3 kurā mēs piemērosim filtru un Lauks:=2 ir šā diapazona kolonnas numurs, uz kura pamata mēs veiksim filtrēšanas procesu.

Visbeidzot, mēs esam iestatījuši kritērijus kā masīvu, lai deklarētu vairāku skolēnu vārdus, piemēram. Emīlija , Daniels , un Gabriel .

➤ Prese F5 .

Pēc tam datu kopa tiks filtrēta pēc vairākiem kritērijiem, lai parādītu skolēnu vārdus un atbilstošos vārdus. Ids un Marks skolēniem Emīlija , Daniels , un Gabriel .

Lasīt vairāk: Vairāku kritēriju filtrēšana programmā Excel (4 piemēroti veidi)

2. metode: Filtrēšana ar vairākiem skaitļu kritērijiem masīvā, izmantojot Excel VBA

Šeit mēs filtrēsim šādu datu kopu, lai noteiktu id. 101135 , 101137 , un 101138 izmantojot šos skaitļus kā vairākus kritērijus masīvā.

Soļi :

➤ Sekot Solis-01 no 1. metode .

➤ Ierakstiet šādu kodu

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

Šeit mēs deklarējām galvenes nosaukumus diapazonā B3: D3 kurā mēs piemērosim filtru un Lauks:=2 ir šī diapazona kolonnas numurs, uz kura pamata mēs veiksim filtrēšanas procesu.

Visbeidzot, mēs esam iestatījuši kritērijus kā masīvu, lai deklarētu vairāku skolēnu identifikatorus, piemēram. 101135 , 101137 , un 101138 un mēs tos esam ievietojuši pēdiņās, lai norādītu tos kā virknes, jo Automātiskais filtrs darbosies tikai virkņu masīvam.

➤ Prese F5 .

Pēc tam jūs iegūsiet to skolēnu vārdus un atzīmes, kuriem ir ids. 101135 , 101137 , un 101138 .

Lasīt vairāk: VBA, lai iegūtu unikālas vērtības no kolonnas masīvā programmā Excel (3 kritēriji)

3. metode: Vairāku kritēriju iestatīšana diapazonā, lai to izmantotu kā masīvu

Šeit mēs esam uzskaitījuši kritērijus Saraksts slejā, kurā ir id 101134 , 101135 , un 101136 pamatojoties uz kuriem mēs veiksim filtrēšanas procesu.

Soļi :

➤ Sekot Solis-01 no 1. metode .

➤ Ierakstiet šādu kodu

 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 

Šeit mēs esam deklarējuši ID_range , k Variants un ID_range ir masīvs, kurā tiks saglabāti vairāki kritēriji, un k ir palielinājums no šī masīva apakšējās robežas līdz augšējai robežai. Lai noteiktu apakšējo robežu un augšējo robežu, mēs izmantojām LBOUND funkcija un UBOUND funkcija attiecīgi.

Portāls FOR cilpa tiek izmantots, lai masīva vērtības, kas nav virknes, pārvērstu virknēs, izmantojot kodu CStr funkcija Visbeidzot, mēs esam izmantojuši šo masīvu kā Kritēriji1 .

➤ Prese F5 .

Pēc tam jūs iegūsiet to skolēnu vārdus un atzīmes, kuriem ir ids. 101134 , 101135 , un 101136 .

Lasīt vairāk: Dažādu kolonnu filtrēšana pēc vairākiem kritērijiem programmā Excel VBA

Līdzīgi lasījumi

  • Kā filtrēt unikālas vērtības programmā Excel (8 vienkārši veidi)
  • Veiciet pielāgotu filtru programmā Excel (5 veidi)
  • Masīva vidējā lieluma aprēķināšana ar VBA (makro, UDF un lietotāja veidlapa)
  • Excel filtra saīsne (3 ātras izmantošanas veidi ar piemēriem)

4. metode: SPLIT un JOIN funkciju izmantošana, lai izveidotu masīvu ar vairākiem kritērijiem

Šeit mēs izmantosim šādu sarakstu. Saraksts kolonnu kā masīvu, un, lai pareizi filtrētu datu kopu, mēs izmantosim arī SPLIT funkcija , JOIN funkcija , un TRANSPOSE funkcija ar VBA kods.

Soļi :

➤ Sekot Solis-01 no 1. metode .

➤ Ierakstiet šādu kodu

 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 

Šeit, TRANSPOSE konvertēs 2D masīvā uz 1D masīvs citādi Automātiskais filtrs nedarbosies, PIEVIENOJIES apvienos katru no vērtībām virkņu masīvā, un visbeidzot, SPLIT sadalīs katru virkni, lai ievadītu tās atsevišķi kā kritērijus datu kopas filtrēšanai.

➤ Prese F5 .

Visbeidzot, jūs iegūsiet to skolēnu vārdus un atzīmes, kuriem ir ids. 101134 , 101135 , un 101136 .

Lasīt vairāk: Kā sadalīt virkni masīvā VBA (3 veidi)

5. metode: Filtrēšana ar vairākiem kritērijiem masīva cilpā, izmantojot VBA

Šajā sadaļā mēs filtrēsim šādu datu kopu atkarībā no Studenta ID slejā vairākiem kritērijiem, kas uzskaitīti Saraksts sleja.

Soļi :

➤ Sekot Solis-01 no 1. metode .

➤ Ierakstiet šādu kodu

 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" & amp; k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Šeit mēs esam deklarējuši k Vesels skaitlis , ID_range(100) Virkne kur ID_range ir masīvs, kurā var saglabāt līdz 100 vērtības. Lai noteiktu šī masīva vērtības, mēs šeit izmantojām FOR cilpa vietnē k no 4 uz 6 kā rindas numurus Saraksts slejā un F ir kolonnas nosaukums.

Visbeidzot, mēs esam izmantojuši šo masīvu kā Kritēriji1 vietnē Automātiskais filtrs .

➤ Prese F5 .

Galu galā jūs saņemsiet to skolēnu vārdus un atzīmes, kuriem ir ids. 101134 , 101135 , un 101136 .

Lasīt vairāk: Vairāku kritēriju filtrēšana programmā Excel, izmantojot VBA (gan AND, gan OR veidi)

6. metode: Nosauktā diapazona izmantošana vairākiem kritērijiem

Šeit mēs esam uzskaitījuši dažus skolēnu vārdus. Saraksts kolonnu un nosauca šo diapazonu kā Students Izmantojot šo nosaukto diapazonu, mēs definēsim masīvu, kurā būs vairāki kritēriji, lai Automātiskais filtrs funkcija.

Soļi :

➤ Sekot Solis-01 no 1. metode .

➤ Ierakstiet šādu kodu

 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 

Šeit mēs esam deklarējuši Student_range , k Variants un izmantoja TRANSPOSE funkcija konvertēt 2D nosauktā diapazona masīvs Students uz 1D masīvu un pēc tam saglabāja to Student_range . Tad to izmanto kā Kritēriji1 par Automātiskais filtrs metode.

➤ Prese F5 .

Pēc tam datu kopa tiks filtrēta pēc vairākiem kritērijiem, lai parādītu skolēnu vārdus un atbilstošos vārdus. Ids un Marks skolēniem Džefersons , Emīlija , un Sāra .

Saistīts saturs: VBA, lai transponētu masīvu programmā Excel (3 metodes)

7. metode: filtrēšanas tabula ar vairākiem kritērijiem masīvā

Šeit mums ir šādi nosacījumi. Tabula kura vārds ir tabula1 un izmantojot Excel VBA mēs mēģināsim filtrēt šo tabulu, pamatojoties uz nosaukumiem. Emīlija , Daniels , un Gabriel kā vairākus kritērijus masīvā.

Soļi :

➤ Sekot Solis-01 no 1. metode .

➤ Ierakstiet šādu kodu

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

Šeit, ListObjects("Tabula1") izmanto tabulas definēšanai tabula1 , Lauks:=2 lai iestatītu šā diapazona otro kolonnu kā filtrēšanas procesa bāzi, un visbeidzot mēs esam definējuši masīvu, kas satur vairākus nosaukumus Kritēriji1 .

➤ Prese F5 .

Galu galā datu kopa tiks filtrēta pēc vairākiem kritērijiem, lai parādītu skolēnu vārdus un atbilstošos nosaukumus. Ids un Marks skolēniem Emīlija , Daniels , un Gabriel .

Lasīt vairāk: Excel VBA: filtrējiet tabulu, pamatojoties uz šūnas vērtību (6 vienkāršas metodes)

Prakses sadaļa

Prakses veikšanai mēs esam nodrošinājuši Prakse sadaļu, piemēram, zemāk lapā ar nosaukumu Prakse . Lūdzu, dariet to pats.

Secinājums

Šajā rakstā mēs mēģinājām aprakstīt veidus, kā filtrēt ar vairākiem kritērijiem kā masīvu, izmantojot Excel. VBA Ja jums ir kādi ieteikumi vai jautājumi, nekautrējieties ar tiem dalīties komentāru sadaļā.

Hjū Vests ir ļoti pieredzējis Excel treneris un analītiķis ar vairāk nekā 10 gadu pieredzi šajā nozarē. Viņam ir bakalaura grāds grāmatvedībā un finansēs un maģistra grāds uzņēmējdarbības vadībā. Hjū aizraujas ar mācīšanu, un viņš ir izstrādājis unikālu mācīšanas pieeju, kas ir viegli izpildāma un saprotama. Viņa ekspertu zināšanas programmā Excel ir palīdzējušas tūkstošiem studentu un profesionāļu visā pasaulē uzlabot savas prasmes un izcelties karjerā. Izmantojot savu emuāru, Hjū dalās savās zināšanās ar pasauli, piedāvājot bezmaksas Excel apmācības un tiešsaistes apmācību, lai palīdzētu personām un uzņēmumiem pilnībā izmantot savu potenciālu.