Excel VBA: Hogyan szűrhet több kritériummal a tömbben (7 mód)

  • Ossza Meg Ezt
Hugh West

Ha azt keresi, hogyan lehet szűrő több kritériummal rendelkező tömb az Excelben VBA Egy nagy adathalmaz több szempont alapján történő szűrése könnyebbé tehető a VBA kódokat, ahelyett, hogy az Excel hagyományos funkcióját használná.

Kezdjük tehát a fő cikkünket.

Munkafüzet letöltése

Szűrés több kritériummal.xlsm

7 módja annak, hogy több kritériummal szűrje a tömböt az Excel VBA használatával

A következő adatkészletben a diákok nevének és azonosítójának megfelelő jegyek néhány rekordja található. Megpróbáljuk ezt az adatkészletet különböző kritériumok alapján tömbként szűrni néhány kód segítségével.

Használtuk Microsoft Excel 365 változatot itt, bármely más változatot is használhatsz, ha az neked megfelel.

Módszer-1: Szűrés több kritériummal, mint szövegek a tömbben

Itt megpróbáljuk a következő adathalmazt szűrni a következő alapján Diák neve oszlop több kritérium esetén, amelyek a következő karakterláncokat tartalmazzák Emily , Daniel , és Gabriel egy tömbben.

Step-01 :

➤ Menj a Fejlesztő Tab>> Visual Basic Opció.

Ezután a Visual Basic szerkesztő megnyílik.

➤ Menj a Beillesztés Tab>> Modul Opció.

Ezután egy Modul létrejön.

Step-02 :

➤ Írja a következő kódot

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

Itt a fejlécek neveit a következő tartományban deklaráltuk B3:D3 amelyben a szűrőt és a Mező:=2 a tartomány oszlopszáma, amely alapján a szűrési folyamatot végezzük.

Végül, a kritériumokat tömbként állítottuk be a több diák nevének deklarálásához, mint pl. Emily , Daniel , és Gabriel .

➤ Sajtó F5 .

Ezután az adathalmaz több kritériumra leszűrve, hogy megjelenítse a diákok nevét és a hozzájuk tartozó Ids és Márkok a diákok számára Emily , Daniel , és Gabriel .

Bővebben: Több kritérium szűrése az Excelben (4 megfelelő mód)

Módszer-2: Szűrés több számkritériummal a tömbben az Excel VBA használatával

Itt a következő adathalmazt fogjuk leszűrni az azonosítókra vonatkozóan 101135 , 101137 , és 101138 azáltal, hogy ezeket a számokat többszörös kritériumként használja egy tömbben.

Lépések :

➤ Follow Step-01 a Módszer-1 .

➤ Írja a következő kódot

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

Itt a fejlécek neveit a következő tartományban deklaráltuk B3:D3 amelyben a szűrőt és a Mező:=2 a tartomány oszlopszáma, amely alapján a szűrési folyamatot végezzük.

Végül, a kritériumokat tömbként állítottuk be, hogy több diák azonosítóját is megadhassuk, mint pl. 101135 , 101137 , és 101138 és idézőjelek közé tettük őket, hogy karakterláncokként adjuk meg őket, mert AutoFilter csak a karakterláncok tömbje esetén fog működni.

➤ Sajtó F5 .

Ezután megkapja az azonosítóval rendelkező diákok nevét és jegyeit. 101135 , 101137 , és 101138 .

Bővebben: VBA az egyedi értékek megszerzéséhez az oszlopból az Excel-táblázatba (3 kritérium)

Módszer-3: Több kritérium beállítása egy tartományban a tömbként való használathoz

Itt felsoroltuk a kritériumokat a Lista az azonosítókat tartalmazó oszlop 101134 , 101135 , és 101136 amely alapján elvégezzük a szűrési folyamatot.

Lépések :

➤ Follow Step-01 a Módszer-1 .

➤ Írja a következő kódot

 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 

Itt kijelentettük, hogy ID_range , k mint Változat és ID_range a több kritériumot tároló tömb, és a k a tömb alsó és felső határától a felső határáig terjedő növekmény. Az alsó és felső határ megadásához a LBOUND funkció és UBOUND funkció illetve.

A FOR ciklus arra szolgál, hogy a tömbben lévő, a karakterláncoktól eltérő értékeket karakterláncokká konvertálja a CStr funkció Végül, ezt a tömböt úgy használtuk fel, mint Kritériumok1 .

➤ Sajtó F5 .

Ezután megkapja az azonosítóval rendelkező diákok nevét és jegyeit. 101134 , 101135 , és 101136 .

Bővebben: Különböző oszlopok szűrése több kritérium alapján az Excel VBA-ban

Hasonló olvasmányok

  • Egyedi értékek szűrése az Excelben (8 egyszerű módja)
  • Egyéni szűrés végrehajtása az Excelben (5 mód)
  • Egy tömb átlagának kiszámítása VBA-val (makró, UDF és UserForm)
  • Excel szűrő parancsikonja (3 gyors felhasználás példákkal)

4. módszer: SPLIT és JOIN függvények használata több kritériummal rendelkező tömb létrehozásához

Itt a következő listát fogjuk használni a Lista oszlopot tömbként, és az adathalmaz megfelelő szűréséhez szintén használjuk a SPLIT funkció , JOIN funkció , és TRANSPOSE funkció egy VBA kód.

Lépések :

➤ Follow Step-01 a Módszer-1 .

➤ Írja a következő kódot

 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 

Tessék, TRANSPOSE átalakítja a 2D tömb egy 1D array egyébként AutoFilter nem fog működni, JOIN az egyes értékeket egy stringekből álló tömbben egyesíti, és végül, SPLIT minden egyes karakterláncot lebont, hogy külön-külön adja meg őket az adathalmaz szűrésének kritériumaként.

➤ Sajtó F5 .

Végül megkapja az azonosítóval rendelkező diákok nevét és jegyeit. 101134 , 101135 , és 101136 .

Bővebben: Hogyan lehet egy karakterláncot tömbre osztani a VBA-ban (3 mód)

Módszer-5: Szűrés több kritériummal egy Loop for Array ciklusban a VBA segítségével

Ebben a szakaszban a következő adathalmazt fogjuk leszűrni a következő adatok alapján Diák azonosító oszlopban felsorolt több kritériumra vonatkozóan a Lista oszlop.

Lépések :

➤ Follow Step-01 a Módszer-1 .

➤ Írja a következő kódot

 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 

Itt kijelentettük, hogy k mint Egész szám , ID_range(100) mint String ahol ID_range egy tömb, amely legfeljebb 100 A tömb értékeinek meghatározására itt a FOR ciklus a oldalon. k a címről 4 a címre. 6 mint a sorszámok a Lista oszlop és F az oszlop neve.

Végül, ezt a tömböt használtuk Kritériumok1 a oldalon. AutoFilter .

➤ Sajtó F5 .

Végül megkapja az azonosítóval rendelkező diákok nevét és jegyeit. 101134 , 101135 , és 101136 .

Bővebben: Több kritérium szűrése Excelben a VBA-val (AND és OR típusok)

6. módszer: Nevezett tartomány használata több kritériumhoz

Itt felsoroltunk néhány nevet a diákokról a Lista oszlopot, és ezt a tartományt elneveztük Diák Ezzel a névvel egy olyan tömböt fogunk definiálni, amely több kritériumot is tartalmazni fog a AutoFilter funkció.

Lépések :

➤ Follow Step-01 a Módszer-1 .

➤ Írja a következő kódot

 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 

Itt kijelentettük, hogy Student_range , k mint Változat , és a TRANSPOSE funkció hogy átalakítsa a 2D a megnevezett tartomány tömbje Diák egy 1D tömb, majd tárolja a Student_range Ezután a következő módon kell használni Kritériumok1 a AutoFilter módszer.

➤ Sajtó F5 .

Ezután az adathalmaz több kritériumra leszűrve, hogy megjelenítse a diákok nevét és a hozzájuk tartozó Ids és Márkok a diákok számára Jefferson , Emily , és Sara .

Kapcsolódó tartalom: VBA a tömb transzponálásához az Excelben (3 módszer)

7. módszer: Szűrő táblázat több kritériummal egy tömbben

Itt a következőkkel rendelkezünk Asztal akinek a neve 1. táblázat és az Excel használatával VBA megpróbáljuk leszűrni ezt a táblázatot a nevek alapján Emily , Daniel , és Gabriel több kritériumként egy tömbben.

Lépések :

➤ Follow Step-01 a Módszer-1 .

➤ Írja a következő kódot

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

Tessék, ListObjects("Table1") a táblázat meghatározására szolgál 1. táblázat , Mező:=2 a tartomány második oszlopának beállításához, mint a szűrési folyamat alapját, és végül definiáltunk egy tömböt, amely több nevet tartalmaz a következő célokra Kritériumok1 .

➤ Sajtó F5 .

Végül az adatállományt több kritérium alapján leszűrve, hogy megjelenítse a diákok nevét és a hozzájuk tartozó Ids és Márkok a diákok számára Emily , Daniel , és Gabriel .

Bővebben: Excel VBA: Táblázat szűrése a cellák értéke alapján (6 egyszerű módszer)

Gyakorlati szekció

A saját magad általi gyakorláshoz biztosítottunk egy Gyakorlat szakasz az alábbi módon egy lapon, amelynek neve Gyakorlat Kérem, tegye meg egyedül.

Következtetés

Ebben a cikkben megpróbáltuk lefedni a több kritériummal történő szűrés módjait tömbként az Excel használatával. VBA Remélem, hasznosnak találja majd. Ha bármilyen javaslata vagy kérdése van, nyugodtan ossza meg a megjegyzés rovatban.

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.