VBA filtrų masyvai

The VBA filtro funkcija leidžia greitai filtruoti masyvus. Filtruojant masyvus reikia atsižvelgti į keletą nustatymų. Mes juos aptarsime žemiau.

Filtras - atitikimas

Pagal numatytuosius nustatymus VBA filtro funkcija filtruos atitikmenų masyvą. Žemiau pateiktame pavyzdyje mes filtruosime masyvą, kad atitiktų „Smith“.

1234567891011121314 Antrinis filtras_atitikimas ()„Apibrėžkite masyvąDim strNames As VariantstrNames = Masyvas („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Filtro masyvasDim strSubNames As VariantstrSubNames = Filtras (strNames, "Smith")„Grafas filtruotas masyvas„MsgBox“ „Rasta“ ir „UBound“ („strSubNames“) - „LBound“ („strSubNames“) + 1 ir „vardai“.Pabaiga Sub

Pora svarbių dalykų:

  • Filtruotas masyvo kintamasis turėtų būti deklaruojamas kaip duomenų tipo variantas, kad nebūtų apibrėžtas masyvo dydis.
  • Pagal numatytuosius nustatymus filtro funkcija skiria didžiąsias ir mažąsias raides. Taigi filtravimas „smith“ duotų kitokį rezultatą nei „Smith“. Žemiau parodysime, kaip pakeisti šį nustatymą.

Filtras - nejaučia didžiosios ir mažosios raidės

Pagal numatytuosius nustatymus VBA skiria didžiąsias ir mažąsias raides. Tai reiškia, kad „kalvis“ nėra lygus „Smithui“. Tai pasakytina apie filtro funkciją, taip pat apie visas (daugumą?) Kitas VBA funkcijas ar palyginimus.

Asmeniškai aš niekada nenoriu, kad VBA skirtų didžiąsias ir mažąsias raides, todėl visuose kodų modulių viršuje visada pridedu parinktį „Palyginti tekstą“. Parinkties palyginimo tekstas nurodo VBA nepaisyti didžiųjų ir mažųjų raidžių, kad nebūtų skiriamos didžiosios ir mažosios raidės:

1 Parinktis Lyginti tekstą

Jei modulio viršuje pridėsite parinktį Palyginti tekstą, filtro funkcijos didžiosios ir mažosios raidės nebus jautrios. Arba galite nurodyti, kad pati filtravimo funkcija neturi reikšmės didžiosioms ir mažosioms raidėms, naudojant argumentą „vbTextCompare“:

1 strSubNames = Filtras (strNames, "smith",, vbTextCompare)

Visas pavyzdys:

1234567891011121314 Antrinis filtras_MatchCase ()„Apibrėžkite masyvąDim strNames As VariantstrNames = Masyvas („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Filtro masyvasDim strSubNames As VariantstrSubNames = Filtras (strNames, "smith",, vbTextCompare)„Grafas filtruotas masyvas„MsgBox“ „Rasta“ ir „UBound“ („strSubNames“) - „LBound“ („strSubNames“) + 1 ir „vardai“.Pabaiga Sub

Filtras - neatitinka

Filtro funkcija taip pat gali būti naudojama masyvo elementams identifikuoti NEREIKIA atitinka įvestus kriterijus, nustatydami argumentą Įtraukti į FALSE:

1 strSubNames = Filtras (strNames, "Smith", False)

Visas pavyzdys:

1234567891011121314 Antrinis filtras_Neatitinka ()„Apibrėžkite masyvąDim strNames As VariantstrNames = Masyvas („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Filtro masyvasDim strSubNames As VariantstrSubNames = Filtras (strNames, "Smith", False)„Grafas filtruotas masyvas„MsgBox“ „Rasta“ ir „UBound“ („strSubNames“) - „LBound“ („strSubNames“) + 1 ir „vardai“.Pabaiga Sub

Filtro funkcija

Funkcija VBA filtras pateikia pateiktos eilutės masyvo masyvo pogrupį.

Filtro funkcijos sintaksė yra tokia:

Filtras („SourceArray“, „Match“, [Include], [Compare])

Funkcijos argumentai yra šie:

  • „SourceArray“ - Originalus filtras
  • Rungtynės - Eilutė, kurios reikia ieškoti
  • [Įtraukti] - PASIRENKAMA TRUE (grąžina atitiktis), FALSE (grąžina neatitinkančius elementus)
  • [Palyginti] - PASIRENKAMA vbBinaryCompare - dvejetainis palyginimas, vbTextCompare - teksto palyginimas, vbDatabaseCompare - duomenų bazių palyginimas

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave