The VBA funkcija filtera omogućuje brzo filtriranje polja. Prilikom filtriranja nizova potrebno je uzeti u obzir nekoliko postavki. O njima ćemo raspravljati u nastavku.
Filter - podudaranje
Prema zadanim postavkama, funkcija VBA filtra filtrirat će niz za podudaranja. U donjem primjeru filtrirat ćemo niz za podudaranja sa "Smith".
1234567891011121314 | Podfilter_podudaranja ()'Definiraj nizDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Niz filtaraDim strSubNames kao varijantastrSubNames = Filter (strNames, "Smith")'Broji filtrirani nizMsgBox "Pronađeno" & UBound (strSubNames) - LBound (strSubNames) + 1 & "imena".Kraj podm |
Nekoliko važnih točaka:
- Varijabla filtriranog niza treba biti deklarirana kao varijanta tipa podataka kako bi se izbjeglo definiranje veličine polja.
- Prema zadanim postavkama, funkcija Filter razlikuje velika i mala slova. Dakle, filtriranje "kovača" dalo bi drugačiji rezultat od "Smitha". U nastavku ćemo vam pokazati kako promijeniti tu postavku.
Filter - Neosjetljivo na velika i mala slova
Prema zadanim postavkama, VBA razlikuje velika i mala slova. To znači da "kovač" nije isto što i "Smith". To vrijedi za funkciju filtra, kao i za sve (većina?) Drugih VBA funkcija ili usporedbi.
Osobno, nikada ne želim da VBA razlikuje mala i velika slova, pa uvijek dodam opciju Usporedi tekst na vrh svih svojih modula koda. Opcija Usporedi tekst govori VBA -u da zanemaruje velika i mala slova tako da ne razlikuje velika i mala slova:
1 | Opcija Usporedi tekst |
Dodavanjem opcije Usporedi tekst na vrh vašeg modula učinit će se velika i mala slova funkcije filtra. Alternativno, možete reći samoj funkciji filtra da ne razlikuje velika i mala slova pomoću argumenta vbTextCompare:
1 | strSubNames = Filter (strNames, "smith",, vbTextCompare) |
Potpuni primjer:
1234567891011121314 | Podfilter_MatchCase ()'Definiraj nizDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Niz filtaraDim strSubNames kao varijantastrSubNames = Filter (strNames, "smith",, vbTextCompare)'Broji filtrirani nizMsgBox "Pronađeno" & UBound (strSubNames) - LBound (strSubNames) + 1 & "imena".Kraj podm |
Filter - ne podudara se
Funkcija filtra također se može koristiti za identifikaciju stavki niza koje NEMOJ podudarajte unesene kriterije postavljanjem argumenta Include na FALSE:
1 | strSubNames = Filter (strNames, "Smith", False) |
Potpuni primjer:
1234567891011121314 | Podfilter_NoMatch ()'Definiraj nizDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Niz filtaraDim strSubNames kao varijantastrSubNames = Filter (strNames, "Smith", False)'Broji filtrirani nizMsgBox "Pronađeno" & UBound (strSubNames) - LBound (strSubNames) + 1 & "imena".Kraj podm |
Funkcija filtera
Funkcija VBA Filter vraća podskup Array isporučenog niza nizova.
Sintaksa funkcije filtra je:
Filtriraj (Izvorni niz, Podudaranje, [Uključi], [Usporedi])
Argumenti funkcije su:
- Izvorni niz - Izvorni niz za filtriranje
- Podudaranje - Niz za traženje
- [Uključi] - NEOBVEZNO TRUE (Vraća podudaranja), FALSE (Vraća elemente koji se ne podudaraju)
- [Usporedi] - NEOBVEZNO vbBinaryCompare - binarna usporedba, vbTextCompare - usporedba teksta, vbDatabaseCompare - usporedba baze podataka