Niz filtrov VBA

The Funkcija filtra VBA omogoča hitro filtriranje nizov. Pri filtriranju nizov je treba upoštevati več nastavitev. O njih bomo razpravljali spodaj.

Filter - ujemanje

Privzeto bo funkcija filtriranja VBA filtrirala matriko za ujemanja. V spodnjem primeru bomo matriko filtrirali za ujemanja z "Smith".

1234567891011121314 Sub Filter_Match ()'Določi nizZatemni imena str. Kot različicostrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Niz filtrovZatemni strSubNames kot variantostrSubNames = Filter (strNames, "Smith")'Preštej filtriran nizMsgBox "Najdeno" & UBound (strSubNames) - LBound (strSubNames) + 1 & "imena".End Sub

Nekaj ​​pomembnih točk:

  • Filtrirano spremenljivko matrike je treba deklarirati kot varianto podatkovnega tipa, da se izognemo določitvi velikosti matrike.
  • Funkcija Filter privzeto razlikuje velike in male črke. Tako bi filtriranje po "smith" dalo drugačen rezultat kot "Smith". Spodaj vam bomo pokazali, kako spremenite to nastavitev.

Filter - občutljiv na velike in male črke

VBA je privzeto občutljiv na velike in male črke. To pomeni, da "kovač" ni enak "Smithu". To velja za funkcijo filtra, pa tudi za vse (večina?) Drugih funkcij ali primerjav VBA.

Osebno si nikoli ne želim, da bi VBA razlikoval med velikimi in malimi črkami, zato vedno dodam možnost Primerjaj besedilo na vrh vseh svojih kodnih modulov. Možnost Primerjaj besedilo pove VBA, naj prezre velike in male črke, tako da ne razlikuje velikih in malih črk:

1 Možnost Primerjaj besedilo

Če dodate možnost Primerjaj besedilo na vrh modula, bo velika in majhna velikost funkcije filtra. Druga možnost je, da sami funkciji filtra določite, da ne razlikuje velikih in malih črk z argumentom vbTextCompare:

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

Popoln primer:

1234567891011121314 Sub Filter_MatchCase ()'Določi nizZatemni imena str. Kot različicostrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Niz filtrovZatemni strSubNames kot variantostrSubNames = Filter (strNames, "smith",, vbTextCompare)'Preštej filtriran nizMsgBox "Najdeno" & UBound (strSubNames) - LBound (strSubNames) + 1 & "imena".End Sub

Filter - se ne ujema

Funkcijo filtra lahko uporabite tudi za identifikacijo elementov matrike, ki NE ujemajo vnesena merila tako, da za argument Vključi nastavite FALSE:

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

Popoln primer:

1234567891011121314 Sub Filter_NoMatch ()'Določi nizZatemni imena str. Kot različicostrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Niz filtrovZatemni strSubNames kot variantostrSubNames = Filter (strNames, "Smith", False)'Preštej filtriran nizMsgBox "Najdeno" & UBound (strSubNames) - LBound (strSubNames) + 1 & "imena".End Sub

Funkcija filtra

Funkcija VBA Filter vrne podnabor Array dobavljenega niza nizov.

Sintaksa funkcije filtra je:

Filter (SourceArray, Match, [Vključi], [Primerjaj])

Argumenti funkcije so:

  • VirArray - Izvirni niz za filtriranje
  • Ujemanje - Niz za iskanje
  • [Vključi] - NEOBVEZNO TRUE (Vrne ujemanja), FALSE (Vrne elemente, ki se ne ujemajo)
  • [Primerjaj] - NEOBVEZNO vbBinaryCompare - binarna primerjava, vbTextCompare - primerjava besedila, vbDatabaseCompare - primerjava baze podatkov

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave