The VBA -suodatintoiminto voit suodattaa matriisit nopeasti. Joukkoja suodatettaessa on otettava huomioon useita asetuksia. Keskustelemme niistä alla.
Suodatin - vastaa
Oletuksena VBA -suodatintoiminto suodattaa matriisin vastaavuuksia varten. Alla olevassa esimerkissä suodatamme matriisin "Smith" vastaavuuksiksi.
1234567891011121314 | Sub Filter_Match ()'Määrittele taulukkoDim strNames VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'SuodatinjärjestelmäDim strSubNames as VariantstrSubNames = Suodatin (strNames, "Smith")'Laske suodatettu taulukkoMsgBox "Löytynyt" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names."End Sub |
Pari tärkeää kohtaa:
- Suodatettu taulukkomuuttuja on ilmoitettava tietotyyppimuunnoksena, jotta vältetään taulukon koon määrittäminen.
- Suodatin -toiminto erottaa oletusarvoisesti isot ja pienet kirjaimet. Joten "smith" -suodatus antaisi eri tuloksen kuin "Smith". Alla näytämme, kuinka voit muuttaa tätä asetusta.
Suodatin - kirjainkoko ei erota
Oletuksena VBA on kirjainkoko. Tämä tarkoittaa, että "seppä" ei ole sama kuin "Smith". Tämä pätee suodatintoimintoon sekä kaikkiin (useimpiin?) Muihin VBA -toimintoihin tai vertailuihin.
Henkilökohtaisesti en koskaan halua VBA: n erottavan kirjainkokoa, joten lisään aina vaihtoehtojen vertailutekstin kaikkien koodimoduulieni yläosaan. Vaihtoehto Vertaa teksti kehottaa VBA: ta jättämään huomiotta kirjaimet, jotta kirjainkoolla ei ole merkitystä:
1 | Vaihtoehto Vertaa tekstiä |
Vaihtoehto Vertaa tekstiä -ominaisuuden lisääminen moduulin yläosaan tekee suodatintoiminnon kirjainkokosta eron. Vaihtoehtoisesti voit kertoa, että itse suodatintoiminto ei erota kirjainkokoa vbTextCompare -argumentilla:
1 | strSubNames = Suodatin (strNames, "smith",, vbTextCompare) |
Täysi esimerkki:
1234567891011121314 | Sub Filter_MatchCase ()'Määrittele taulukkoDim strNames VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'SuodatinjärjestelmäDim strSubNames as VariantstrSubNames = Suodatin (strNames, "smith",, vbTextCompare)'Laske suodatettu taulukkoMsgBox "Löytynyt" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names."End Sub |
Suodatin - ei täsmää
Suodatintoimintoa voidaan käyttää myös tunnistamaan matriisikohteita, jotka ÄLÄ vastaa syötettyjä ehtoja asettamalla Sisällytä -argumentiksi EPÄTOSI:
1 | strSubNames = Suodatin (strNames, "Smith", False) |
Täysi esimerkki:
1234567891011121314 | Sub Filter_NoMatch ()'Määrittele taulukkoDim strNames VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'SuodatinjärjestelmäDim strSubNames as VariantstrSubNames = Suodatin (strNames, "Smith", False)'Laske suodatettu taulukkoMsgBox "Löytynyt" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names."End Sub |
Suodatintoiminto
VBA -suodatintoiminto palauttaa toimitetun merkkijonon taulukon alijoukon.
Suodatintoimintojen syntaksi on:
Suodatin (SourceArray, Match, [Sisällytä], [Vertaa])
Funktion argumentit ovat:
- LähdeArray - Alkuperäinen suodatin
- Ottelu - Haettava merkkijono
- [Sisältää] - VALINNAINEN TRUE (palauttaa osumat), FALSE (palauttaa elementit, jotka eivät täsmää)
- [Vertailla] - VALINNAINEN vbBinaryCompare - binäärinen vertailu, vbTextCompare - tekstin vertailu, vbDatabaseCompare - tietokantavertailu