VBA -filterarrays

Det VBA -filterfunktion giver dig mulighed for hurtigt at filtrere arrays. Der er flere indstillinger, der skal overvejes, når du filtrerer arrays. Vi vil diskutere dem nedenfor.

Filter - Match

Som standard filtrerer VBA -filterfunktionen et array til kampe. I eksemplet herunder filtrerer vi arrayet til kampe med "Smith".

1234567891011121314 Sub Filter_Match ()'Definer ArrayDim strNames som variantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter ArrayDim strSubNames som variantstrSubNames = Filter (strNames, "Smith")'Tæl filtreret matrixMsgBox "Fundet" og UBound (strSubNames) - LBound (strSubNames) + 1 & "navne."Afslut Sub

Et par vigtige punkter:

  • Den filtrerede array -variabel bør erklæres som datatypevariant for at undgå at definere matrixstørrelsen.
  • Filterfunktionen er som standard forskel på store og små bogstaver. Så filtrering på "smith" ville give et andet resultat end "Smith". Nedenfor viser vi dig, hvordan du ændrer denne indstilling.

Filter - Etui ufølsomt

Som standard er VBA store og små bogstaver. Det betyder, at "smed" ikke er lig med "Smith". Dette gælder for filterfunktionen såvel som alle (de fleste?) Andre VBA -funktioner eller sammenligninger.

Personligt vil jeg aldrig have VBA til at være store og små bogstaver, så jeg tilføjer altid Option Compare Text til toppen af ​​alle mine kodemoduler. Option Compare Text fortæller VBA at ignorere store og små bogstaver, så det er ufølsomt for store og små bogstaver:

1 Mulighed Sammenlign tekst

Tilføjelse af valgmulighed Sammenlign tekst til toppen af ​​dit modul vil gøre funktionen Filterfunktion ufølsom. Alternativt kan du fortælle, at selve filterfunktionen ikke er store og små bogstaver i forhold til argumentet vbTextCompare:

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

Fuldt eksempel:

1234567891011121314 Sub Filter_MatchCase ()'Definer ArrayDim strNames som variantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter ArrayDim strSubNames som variantstrSubNames = Filter (strNames, "smith",, vbTextCompare)'Tæl filtreret matrixMsgBox "Fundet" og UBound (strSubNames) - LBound (strSubNames) + 1 & "navne."Afslut Sub

Filter - matcher ikke

Filterfunktionen kan også bruges til at identificere matrixelementer, der LADE VÆRE MED match de indtastede kriterier ved at indstille Inkluder -argumentet til FALSKT:

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

Fuldt eksempel:

1234567891011121314 Underfilter_NoMatch ()'Definer ArrayDim strNames som variantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter ArrayDim strSubNames som variantstrSubNames = Filter (strNames, "Smith", False)'Tæl filtreret matrixMsgBox "Fundet" og UBound (strSubNames) - LBound (strSubNames) + 1 & "navne."Afslut Sub

Filterfunktion

VBA -filterfunktionen returnerer et Array -undersæt af et medfølgende strengarray.

Filterfunktionssyntaxen er:

Filter (SourceArray, Match, [Inkluder], [Sammenlign])

Funktionsargumenterne er:

  • SourceArray - Det originale array til filtrering
  • Match - Strengen, der skal søges efter
  • [Omfatte] - VALGFRI TRUE (Returnerer matches), FALSE (Returnerer elementer, der ikke matcher)
  • [Sammenligne] - VALGFRI vbBinaryCompare - binær sammenligning, vbTextCompare - tekst sammenligning, vbDatabaseCompare - database sammenligning

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave