VBA-Filter-Arrays

Die VBA-Filterfunktion ermöglicht Ihnen das schnelle Filtern von Arrays. Beim Filtern von Arrays sind mehrere Einstellungen zu berücksichtigen. Wir werden sie im Folgenden besprechen.

Filter - Match

Standardmäßig filtert die VBA-Filterfunktion ein Array nach Übereinstimmungen. Im folgenden Beispiel werden wir das Array nach Übereinstimmungen mit „Smith“ filtern.

1234567891011121314 Unterfilter_Match()'Array definierenDim strNames als VariantestrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter-ArrayDim strSubNames als VariantestrSubNames = Filter(strNames, "Smith")'Gefiltertes Array zählenMsgBox "Gefunden" & UBound(strSubNames) - LBound(strSubNames) + 1 & " Namen."End Sub

Ein paar wichtige Punkte:

  • Die gefilterte Array-Variable sollte als Datentyp-Variante deklariert werden, um die Definition der Array-Größe zu vermeiden.
  • Standardmäßig berücksichtigt die Filterfunktion die Groß-/Kleinschreibung. Eine Filterung nach „smith“ würde also ein anderes Ergebnis liefern als „Smith“. Im Folgenden zeigen wir Ihnen, wie Sie diese Einstellung ändern können.

Filter - Groß-/Kleinschreibung nicht beachten

Standardmäßig ist bei VBA die Groß-/Kleinschreibung beachtet. Das bedeutet, dass „Smith“ nicht gleich „Smith“ ist. Dies gilt für die Filterfunktion sowie für alle (die meisten?) anderen VBA-Funktionen oder -Vergleiche.

Persönlich möchte ich nie, dass VBA die Groß-/Kleinschreibung beachtet, daher füge ich immer die Option Text vergleichen oben in allen meinen Codemodulen hinzu. Die Option Text vergleichen weist VBA an, die Groß-/Kleinschreibung zu ignorieren, sodass die Groß-/Kleinschreibung nicht beachtet wird:

1 Option Text vergleichen

Wenn Sie die Option Text vergleichen oben in Ihrem Modul hinzufügen, wird die Groß-/Kleinschreibung der Filterfunktion nicht berücksichtigt. Alternativ können Sie die Filterfunktion selbst mit dem Argument vbTextCompare so einstellen, dass die Groß-/Kleinschreibung nicht beachtet wird:

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

Vollständiges Beispiel:

1234567891011121314 Unterfilter_MatchCase()'Array definierenDim strNames als VariantestrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter-ArrayDim strSubNames als VariantestrSubNames = Filter(strNames, "smith", , vbTextCompare)'Gefiltertes Array zählenMsgBox "Gefunden" & UBound(strSubNames) - LBound(strSubNames) + 1 & " Namen."End Sub

Filter - stimmt nicht überein

Die Filterfunktion kann auch verwendet werden, um Array-Elemente zu identifizieren, die NICHT mit den eingegebenen Kriterien übereinstimmen, indem Sie das Include-Argument auf FALSE setzen:

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

Vollständiges Beispiel:

1234567891011121314 Unterfilter_NoMatch()'Array definierenDim strNames als VariantestrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter-ArrayDim strSubNames als VariantestrSubNames = Filter(strNames, "Smith", False)'Gefiltertes Array zählenMsgBox "Gefunden" & UBound(strSubNames) - LBound(strSubNames) + 1 & " Namen."End Sub

Filterfunktion

Die VBA-Filterfunktion gibt eine Array-Untermenge eines bereitgestellten String-Arrays zurück.

Die Syntax der Filterfunktion lautet:

Filter( SourceArray, Match, [Include], [Compare] )

Die Funktionsargumente sind:

  • SourceArray - Das ursprüngliche zu filternde Array
  • Spiel - Die Zeichenfolge, nach der gesucht werden soll
  • [Enthalten] - OPTIONAL TRUE (Gibt Übereinstimmungen zurück), FALSE (Gibt Elemente zurück, die nicht übereinstimmen)
  • [Vergleichen] - OPTIONAL vbBinaryCompare - Binärvergleich, vbTextCompare - Textvergleich, vbDatabaseCompare - Datenbankvergleich

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave