VBA – Arrays filtern

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 22, 2022

Mit der VBA-Filterfunktion können Sie Arrays schnell filtern. Es gibt mehrere Einstellungen, die beim Filtern von Arrays zu beachten sind. Wir werden sie im Folgenden besprechen.

Filter – Übereinstimmung

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

Sub Filter_Uebereinstimmend()

    'Array definieren
    Dim strNamen As Variant
    strNamen = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")

    'Array filtern
    Dim strSubNamen As Variant
    strSubNamen = Filter(strNamen, "Smith")
    
    'Gefiltertes Array zählen
    MsgBox "Es wurden " & UBound(strSubNamen) - LBound(strSubNamen) + 1 & " Namen gefunden."

End Sub

Ein paar wichtige Punkte:

  • Die gefilterte Array-Variable sollte als Datentyp Variant deklariert werden, um die Definition der Array-Größe zu vermeiden.
  • Standardmäßig unterscheidet die Filterfunktion zwischen Groß- und Kleinschreibung. Das Filtern 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 wird die Groß-/Kleinschreibung in VBA beachtet. Das bedeutet, dass die Groß- und Kleinschreibung gleich sein muss, damit der Text übereinstimmt (z. B. „smith“ ist nicht gleich „Smith“). Dies gilt sowohl für die Filterfunktion als auch für alle bzw. die meisten anderen VBA-Funktionen oder -Vergleiche.

Ich persönlich möchte nie, dass VBA die Groß- und Kleinschreibung beachtet, daher füge ich immer Option Compare Text am Anfang aller meiner Codemodule hinzu. Option Compare Text weist VBA an, die Groß- und Kleinschreibung zu ignorieren, so dass diese nicht berücksichtigt wird:

Option Compare Text

Wenn Sie Option Compare Text am Anfang Ihres Moduls hinzufügen, wird die Filterfunktion die Groß- und Kleinschreibung nicht berücksichtigen. Alternativ können Sie der Filterfunktion selbst mit dem Argument vbTextCompare mitteilen, dass sie die Groß- und Kleinschreibung nicht berücksichtigt werden soll:

strSubNamen = Filter(strNamen, "smith", , vbTextCompare)

Vollständiges Beispiel:

Sub Filter_Klein_Grossschreibung_Abgleichen()

    'Array definieren
    Dim strNamen As Variant
    strNamen = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")

    'Array filtern
    Dim strSubNamen As Variant
    strSubNamen = Filter(strNamen, "smith", , vbTextCompare)
    
    'Gefiltertes Array zählen
    MsgBox "Es wurden " & UBound(strSubNamen) - LBound(strSubNamen) + 1 & " Namen gefunden."

End Sub

Filter – Nicht übereinstimmend

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

strSubNamen = Filter(strNamen, "Smith", False)

Vollständiges Beispiel:

Sub Filter_Nicht_Uebereinstimmend()

    'Array definieren
    Dim strNamen As Variant
    strNamen = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")

    'Array filtern
    Dim strSubNamen As Variant
    strSubNamen = Filter(strNamen, "Smith", False)
    
    'Gefiltertes Array zählen
    MsgBox "Es wurden" & UBound(strSubNamen) - LBound(strSubNamen) + 1 & " Namen gefunden."

End Sub

Filterfunktion

 

vba array filter quellcode

Die VBA-Filterfunktion gibt einen Teil eines übergebenen Zeichenketten-Arrays zurück. Die Syntax der Filterfunktion lautet:

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

Die Argumente der Funktion sind:

  • SourceArray – Das ursprüngliche Array zum Filtern
  • Match – Die Zeichenfolge, nach der gesucht werden soll
  • [Include]OPTIONAL – TRUE (liefert Übereinstimmungen), FALSE (liefert Elemente, die nicht übereinstimmen)
  • [Compare]OPTIONAL – vbBinaryCompare = Binärvergleich, vbTextCompare = Textvergleich, vbDatabaseCompare = Datenbankvergleich
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples