Az VBA szűrő funkció lehetővé teszi a tömbök gyors szűrését. A tömbök szűrésekor több beállítást is figyelembe kell venni. Az alábbiakban ezeket tárgyaljuk.
Szűrő - egyezés
Alapértelmezés szerint a VBA szűrő funkció egy tömböt szűr egyezésre. Az alábbi példában szűrjük a tömböt a „Smith” egyezésekkel.
1234567891011121314 | Sub Filter_Match ()'Definiálja a tömbötDim strNames VariantstrNames = Tömb ("Steve Smith", "Shannon Smith", "Ryan Johnson")'SzűrőtömbDim strSubNames VariantstrSubNames = Szűrő (strNames, "Smith")- Gróf szűrt tömbMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names".End Sub |
Pár fontos pont:
- A szűrt tömbváltozót adattípus -változatként kell deklarálni, hogy elkerüljük a tömb méretének meghatározását.
- A Szűrő funkció alapértelmezés szerint megkülönbözteti a kis- és nagybetűket. Tehát a „kovács” szűrése más eredményt adna, mint a „Smith”. Az alábbiakban bemutatjuk, hogyan módosíthatja ezt a beállítást.
Szűrő - a kis- és nagybetűk nem érzékenyek
Alapértelmezés szerint a VBA kis- és nagybetűket érzékeny. Ez azt jelenti, hogy a „kovács” nem egyenlő a „smittel”. Ez igaz a szűrőfunkcióra, valamint az összes (legtöbb?) Egyéb VBA funkcióra vagy összehasonlításra.
Személy szerint soha nem szeretném, ha a VBA kis- és nagybetűket megkülönböztetne, ezért mindig hozzáadom az Option Compare Text lehetőséget az összes kódmodulom tetejére. A Szöveg összehasonlítása lehetőség arra utasítja a VBA -t, hogy figyelmen kívül hagyja a kis- és nagybetűket, így a kis- és nagybetűk nem érzékenyek:
1 | Opció Szöveg összehasonlítása |
Ha hozzáadja a Lehetőségek összehasonlítása szöveget a modul tetejéhez, a szűrőfunkció megkülönbözteti a kis- és nagybetűket. A vbTextCompare argumentummal azt is megmondhatja, hogy maga a szűrőfunkció nem különbözteti meg a kis- és nagybetűket.
1 | strSubNames = Szűrő (strNames, "smith",, vbTextCompare) |
Teljes példa:
1234567891011121314 | Sub Filter_MatchCase ()'Definiálja a tömbötDim strNames VariantstrNames = Tömb ("Steve Smith", "Shannon Smith", "Ryan Johnson")'SzűrőtömbDim strSubNames VariantstrSubNames = Szűrő (strNames, "smith",, vbTextCompare)- Gróf szűrt tömbMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names".End Sub |
Szűrő - nem egyezik
A szűrőfunkció arra is használható, hogy azonosítsa a tömb elemeit NE feleljen meg a megadott feltételeknek az Include argumentum FALSE értékre állításával:
1 | strSubNames = Szűrő (strNames, "Smith", False) |
Teljes példa:
1234567891011121314 | Sub Filter_NoMatch ()'Definiálja a tömbötDim strNames VariantstrNames = Tömb ("Steve Smith", "Shannon Smith", "Ryan Johnson")'SzűrőtömbDim strSubNames VariantstrSubNames = Szűrő (strNames, "Smith", False)- Gróf szűrt tömbMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names".End Sub |
Szűrő funkció
A VBA szűrő függvény a mellékelt karakterlánc tömb tömb részhalmazát adja vissza.
A szűrőfunkció szintaxisa a következő:
Szűrés (SourceArray, Match, [Include], [Compare])
A függvény argumentumai a következők:
- SourceArray - Az eredeti tömb szűrni
- mérkőzés - A keresendő karakterlánc
- [Belefoglalás] - VÁLASZTHATÓ IGAZ (egyezést ad vissza), FALSE (nem egyező elemeket ad vissza)
- [Összehasonlítás] - VÁLASZTHATÓ vbBinaryCompare - bináris összehasonlítás, vbTextCompare - szöveges összehasonlítás, vbDatabaseCompare - adatbázis -összehasonlítás