"Excel VBA": kaip filtruoti pagal kelis kriterijus masyve (7 būdai)

  • Pasidalinti
Hugh West

Jei ieškote būdų, kaip filtras su kelių kriterijų masyvu "Excel VBA tada esate tinkamoje vietoje. Didelį duomenų rinkinį filtruoti pagal daugelį kriterijų galima lengviau naudojant VBA kodus, o ne naudoti įprastą "Excel" funkciją.

Taigi, pradėkime pagrindinį straipsnį.

Atsisiųsti darbo knygą

Kelių kriterijų filtras.xlsm

7 būdai, kaip filtruoti pagal kelis kriterijus masyve naudojant "Excel VBA

Toliau pateiktame duomenų rinkinyje turime keletą pažymių įrašų, atitinkančių mokinių vardus ir jų ID. Bandysime filtruoti šį duomenų rinkinį pagal įvairius kriterijus kaip masyvą, naudodami tam tikrus kodus.

Mes naudojome "Microsoft Excel 365 versiją, bet galite naudoti bet kokias kitas versijas pagal savo patogumą.

1 metodas: filtras su keliais kriterijais kaip tekstais masyve

Čia bandysime filtruoti šį duomenų rinkinį pagal Mokinio vardas ir pavardė kelių kriterijų, kuriuose yra eilutės, stulpelis Emily , Daniel , ir Gabriel masyve.

Žingsnis-01 :

➤ Eikite į Kūrėjas Skirtukas>> "Visual Basic Galimybė.

Tada "Visual Basic" redaktorius atsivers.

➤ Eikite į Įdėkite Skirtukas>> Modulis Galimybė.

Po to Modulis bus sukurta.

Žingsnis-02 :

➤ Parašykite šį kodą

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

Čia deklaravome antraštės pavadinimus iš intervalo B3:D3 kuriame taikysime filtrą ir Laukas:=2 yra šio diapazono stulpelio numeris, pagal kurį atliksime filtravimo procesą.

Galiausiai nustatėme kriterijus kaip masyvą, kad būtų galima deklaruoti kelių mokinių vardus, pvz. Emily , Daniel , ir Gabriel .

➤ Spauda F5 .

Tada duomenų rinkinį išfiltruosite pagal kelis kriterijus, kad būtų rodomi mokinių vardai ir pavardės bei atitinkami jų vardai. Tapatybės ženklai ir Žymos studentams Emily , Daniel , ir Gabriel .

Skaityti daugiau: Kelių kriterijų filtravimas programoje "Excel" (4 tinkami būdai)

2 metodas: filtravimas su keliais skaičiaus kriterijais masyve naudojant "Excel VBA

Šiuo atveju filtruosime šį duomenų rinkinį pagal ID 101135 , 101137 , ir 101138 naudodami šiuos skaičius kaip kelis kriterijus masyve.

Žingsniai :

➤ Sekite Žingsnis-01 1 metodas .

➤ Parašykite šį kodą

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

Čia deklaravome antraštės pavadinimus iš intervalo B3:D3 kuriame taikysime filtrą ir Laukas:=2 yra šio diapazono stulpelio numeris, pagal kurį atliksime filtravimo procesą.

Galiausiai nustatėme kriterijus kaip masyvą, kad galėtume deklaruoti kelių mokinių ID, pvz. 101135 , 101137 , ir 101138 ir juos įrašėme kabliataškiuose, kad jie būtų nurodyti kaip eilutės, nes Automatinis filtras veiks tik eilutės masyvo atveju.

➤ Spauda F5 .

Po to gausite mokinių, turinčių ID, vardus, pavardes ir pažymius. 101135 , 101137 , ir 101138 .

Skaityti daugiau: VBA unikalioms vertėms iš stulpelio į "Excel" masyvą gauti (3 kriterijai)

3 metodas: kelių kriterijų nustatymas diapazone naudojant kaip masyvą

Čia išvardijame kriterijus, kurie Sąrašas stulpelį, kuriame yra ID 101134 , 101135 , ir 101136 pagal kurį atliksime filtravimo procesą.

Žingsniai :

➤ Sekite Žingsnis-01 1 metodas .

➤ Parašykite šį kodą

 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 

Čia mes paskelbėme ID_range , k kaip Variantas ir ID_range yra masyvas, kuriame bus saugomi keli kriterijai, o k yra prieaugis nuo apatinės iki viršutinės šio masyvo ribos. Norėdami nustatyti apatinę ir viršutinę ribą, mes naudojome LBOUND funkcija ir UBOUND funkcija atitinkamai.

Svetainė FOR ciklas naudojamas kitų nei eilutės reikšmių, esančių masyve, konvertavimui į eilutes, naudojant CStr funkcija . Galiausiai šį masyvą panaudojome kaip Kriterijai1 .

➤ Spauda F5 .

Vėliau gausite mokinių, turinčių ID, vardus, pavardes ir pažymius. 101134 , 101135 , ir 101136 .

Skaityti daugiau: Skirtingų stulpelių filtravimas pagal kelis kriterijus "Excel VBA" programoje

Panašūs skaitiniai

  • Kaip "Excel" programoje filtruoti unikalias vertes (8 paprasti būdai)
  • Atlikite pasirinktinį filtrą "Excel" programoje (5 būdai)
  • Apskaičiuokite masyvo vidurkį naudodami VBA (makrokomandą, UDF ir naudotojo formą)
  • "Excel" filtro trumpinys (3 greiti naudojimo būdai su pavyzdžiais)

4 būdas: naudojant SPLIT ir JOIN funkcijas, kad sukurtumėte masyvą su keliais kriterijais

Čia naudosime šį sąrašą Sąrašas stulpelį kaip masyvą, o tinkamam duomenų rinkinio filtravimui taip pat naudosime SPLIT funkcija , JOIN funkcija , ir TRANSPOSE funkcija į VBA kodas.

Žingsniai :

➤ Sekite Žingsnis-01 1 metodas .

➤ Parašykite šį kodą

 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 

Čia, TRANSPOSE konvertuos 2D masyvą į 1D kitaip - masyvas Automatinis filtras neveiks, PRISIJUNKITE PRIE sujungs kiekvieną reikšmę į eilutės masyvą ir galiausiai, SPLIT išskaidys kiekvieną eilutę ir pateiks jas atskirai kaip duomenų rinkinio filtravimo kriterijus.

➤ Spauda F5 .

Galiausiai gausite mokinių, turinčių ID, vardus, pavardes ir pažymius. 101134 , 101135 , ir 101136 .

Skaityti daugiau: Kaip padalyti eilutę į masyvą naudojant VBA (3 būdai)

5 metodas: filtravimas keliais kriterijais VBA ciklo masyvui naudojant VBA

Šiame skyriuje filtruosime šį duomenų rinkinį pagal Studento ID stulpelis, skirtas keliems kriterijams, išvardytiems Sąrašas skiltis.

Žingsniai :

➤ Sekite Žingsnis-01 1 metodas .

➤ Parašykite šį kodą

 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 

Čia mes paskelbėme k kaip Sveikasis skaičius , ID_range(100) kaip Stygos kur ID_range yra masyvas, kuriame galima saugoti iki 100 reikšmes. Norėdami nustatyti šio masyvo reikšmes, čia naudojome FOR ciklas svetainėje k 4 į 6 kaip eilučių numeriai Sąrašas stulpelyje ir F yra stulpelio pavadinimas.

Galiausiai šį masyvą naudojome kaip Kriterijai1 svetainėje Automatinis filtras .

➤ Spauda F5 .

Galiausiai gausite mokinių, turinčių ID, vardus, pavardes ir pažymius. 101134 , 101135 , ir 101136 .

Skaityti daugiau: Kelių kriterijų filtravimas programoje "Excel" naudojant VBA (ir AND, ir OR tipai)

6 metodas: Įvardyto diapazono naudojimas keliems kriterijams

Čia išvardijame kai kurių mokinių vardus ir pavardes. Sąrašas stulpelį ir pavadino šį diapazoną kaip Studentas Naudodami šį pavadintą intervalą apibrėšime masyvą, į kurį bus įtraukti keli kriterijai. Automatinis filtras funkcija.

Žingsniai :

➤ Sekite Žingsnis-01 1 metodas .

➤ Parašykite šį kodą

 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 

Čia mes paskelbėme Student_range , k kaip Variantas ir naudojo TRANSPOSE funkcija konvertuoti 2D įvardyto diapazono masyvas Studentas į 1D masyvą ir išsaugojo jį Student_range . Tada jis naudojamas kaip Kriterijai1 Automatinis filtras metodas.

➤ Spauda F5 .

Tada duomenų rinkinį išfiltruosite pagal kelis kriterijus, kad būtų rodomi mokinių vardai ir pavardės bei atitinkami jų vardai. Tapatybės ženklai ir Žymos studentams Džefersonas , Emily , ir Sara .

Susijęs turinys: VBA transponuoti masyvą "Excel" programoje (3 metodai)

7 metodas: filtravimo lentelė su keliais kriterijais masyve

Čia turime šiuos dalykus Lentelė kurio vardas yra 1 lentelė ir naudojant "Excel VBA bandysime filtruoti šią lentelę pagal pavadinimus Emily , Daniel , ir Gabriel kaip kelis kriterijus masyve.

Žingsniai :

➤ Sekite Žingsnis-01 1 metodas .

➤ Parašykite šį kodą

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

Čia, ListObjects("Table1") naudojama lentelei apibrėžti. 1 lentelė , Laukas:=2 antrajam šio diapazono stulpeliui nustatyti kaip filtravimo proceso pagrindą ir galiausiai apibrėžėme masyvą, kuriame yra keli pavadinimai Kriterijai1 .

➤ Spauda F5 .

Galiausiai duomenų rinkinį išfiltruosite pagal kelis kriterijus, kad būtų rodomi mokinių vardai, pavardės ir atitinkami jų vardai. Tapatybės ženklai ir Žymos studentams Emily , Daniel , ir Gabriel .

Skaityti daugiau: "Excel VBA": filtruokite lentelę pagal langelio vertę (6 paprasti metodai)

Praktikos skyrius

Norėdami patys atlikti praktiką, pateikėme Praktika skirsnį, kaip nurodyta toliau, lape, pavadintame Praktika . Prašome tai padaryti patiems.

Išvada

Šiame straipsnyje bandėme apžvelgti filtravimo būdus, kaip filtruoti pagal kelis kriterijus kaip masyvą naudojant "Excel". VBA lengvai. Tikiuosi, kad jums tai bus naudinga. Jei turite pasiūlymų ar klausimų, nedvejodami pasidalykite jais komentarų skiltyje.

Hugh Westas yra labai patyręs Excel treneris ir analitikas, turintis daugiau nei 10 metų patirtį šioje srityje. Jis yra įgijęs apskaitos ir finansų bakalauro bei verslo administravimo magistro laipsnius. Hugh turi aistrą mokymui ir sukūrė unikalų mokymo metodą, kurį lengva sekti ir suprasti. Jo ekspertinės žinios apie „Excel“ padėjo tūkstančiams studentų ir specialistų visame pasaulyje tobulinti savo įgūdžius ir tobulėti savo karjeroje. Savo tinklaraštyje Hugh dalijasi savo žiniomis su pasauliu, siūlydamas nemokamus „Excel“ vadovėlius ir internetinius mokymus, kad padėtų asmenims ir įmonėms išnaudoti visą savo potencialą.