VBA filtrimassiivid

The VBA filtri funktsioon võimaldab massiive kiiresti filtreerida. Massiivide filtreerimisel tuleb arvestada mitmete sätetega. Me arutame neid allpool.

Filter - vaste

Vaikimisi filtreerib VBA filtri funktsioon vaste massiivi. Allolevas näites filtreerime massiivi vasteks „Smithiga”.

1234567891011121314 Alamfiltri_vaste ()'Defineeri massiivDim strNames VariantstrNames = Massiiv ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter MassiivDim strSubNames VariantstrSubNames = Filter (strNames, "Smith")'Krahv filtreeritud massiivMsgBox "Leitud" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nimed".End Sub

Paar olulist punkti:

  • Filtreeritud massiivi muutuja tuleks deklareerida andmetüübi variandina, et vältida massiivi suuruse määratlemist.
  • Funktsioon Filter on vaikimisi tõstutundlik. Nii et filtreerimine "sepist" annaks teistsuguse tulemuse kui "Smith". Allpool näitame teile, kuidas seda seadet muuta.

Filter - tõstutundlik

Vaikimisi on VBA tõstutundlik. See tähendab, et “sepp” ei võrdu “Smithiga”. See kehtib filtri funktsiooni ja kõigi (enamiku?) Muude VBA funktsioonide või võrdluste kohta.

Isiklikult ei taha ma kunagi, et VBA oleks tõstutundlik, seega lisan alati suvandi Võrdle teksti kõigi oma koodimoodulite ülaossa. Valik Võrdle teksti käsib VBA -l ignoreerida väiketähti, nii et see ei ole tõstutundlik:

1 Valik Võrdle teksti

Kui lisate mooduli ülaossa suvandi Võrdle teksti, muudab filtri funktsiooni tähestiku tundmatuks. Teise võimalusena võite öelda, et filtri funktsioon ise ei ole tõstutundlik, kasutades argumenti vbTextCompare:

1 strSubNames = Filter (strNames, "sepp",, vbTextCompare)

Täielik näide:

1234567891011121314 Alamfilter_MatchCase ()'Defineeri massiivDim strNames VariantstrNames = Massiiv ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter MassiivDim strSubNames VariantstrSubNames = Filter (strNames, "sepp",, vbTextCompare)'Krahv filtreeritud massiivMsgBox "Leitud" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nimed".End Sub

Filter - ei sobi

Filtri funktsiooni saab kasutada ka massiivielementide tuvastamiseks ÄRA vastama sisestatud kriteeriumidele, seades argumendi Kaasa väärtuseks VÄÄR:

1 strSubNames = Filter (strNames, "Smith", vale)

Täielik näide:

1234567891011121314 Alamfilter_NoMatch ()'Defineeri massiivDim strNames VariantstrNames = Massiiv ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter MassiivDim strSubNames VariantstrSubNames = Filter (strNames, "Smith", vale)'Krahv filtreeritud massiivMsgBox "Leitud" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nimed".End Sub

Filtri funktsioon

Funktsioon VBA Filter tagastab kaasasoleva stringimassiivi massiivi alamhulga.

Filtri funktsiooni süntaks on järgmine:

Filter (SourceArray, Match, [Kaasa], [Võrdle])

Funktsiooni argumendid on järgmised:

  • SourceArray - Algne massiiv filtreerimiseks
  • Match - Otsitav string
  • [Kaasa] - VALIKULINE TRUE (tagastab vasted), FALSE (tagastab elemendid, mis ei ühti)
  • [Võrdlema] - VALIKULINE vbBinaryCompare - binaarne võrdlus, vbTextCompare - tekstide võrdlus, vbDatabaseCompare - andmebaaside võrdlus

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave