Excel VBA Match-Funktion

Die VBA-Übereinstimmungsfunktion sucht nach der Position oder Zeilennummer des Suchwerts im Tabellenarray, dh in der Haupt-Excel-Tabelle. Zum Beispiel VLOOKUP, HLOOKUP, MATCH, INDEX usw. Dies sind die Suchfunktionen, die wichtiger sind als andere. Leider stehen in VBA nicht die gleichen Funktionen zur Verfügung, um die Arbeit zu vereinfachen. Wir können diese Funktionen jedoch als Arbeitsblattfunktionen im VBA-Skript verwenden, um unser Leben zu vereinfachen.

Heute lernen wir die MATCH-Funktion, die unter VBA als Arbeitsblattfunktion verwendet werden kann.

VBA-Übereinstimmung hat dieselbe Verwendung wie die Übereinstimmungsformel in Excel. Diese Funktion in MS Excel VBA findet eine Übereinstimmung innerhalb eines Arrays in Bezug auf den Suchwert und gibt dessen Position aus. Diese Funktion ist nützlich, wenn Sie die Daten anhand bestimmter Werte auswerten müssen. Beispielsweise ist VBA MATCH hilfreich, wenn Sie die Gehaltsdaten von Mitarbeitern haben und die numerische Position eines Mitarbeiters in Ihren Daten ermitteln müssen, dessen Gehalt unter / über / gleich einem bestimmten Wert liegt. Es ist sehr hilfreich bei der Analyse der Daten und auch eine Codezeile kann die Dinge für Sie automatisieren.

Syntax der Match-Funktion in Excel VBA

VBA Match hat die folgende Syntax:

Wo,

  • Arg1 - Lookup_value - Der Wert, den Sie in einem bestimmten Array nachschlagen müssen.
  • Arg2 - Lookup_array - Ein Array von Zeilen und Spalten, die einen möglichen Lookup_value enthalten.
  • Arg3 - Match_type - Der Match-Typ, der den Wert -1, 0 oder 1 annimmt.

Wenn match_type = -1 bedeutet, dass die MATCH-Funktion den kleinsten Wert ermittelt, der größer oder gleich dem lookup_value ist. Dazu muss das lookup_array in absteigender Reihenfolge sortiert werden.

Wenn match_type = 0 bedeutet, dass die MATCH-Funktion den Wert ermittelt, der genau dem Wert von lookup_value entspricht.

Wenn match_type = +1, bedeutet dies, dass die MATCH-Funktion den größten Wert ermittelt, der kleiner oder gleich dem lookup_value ist. Dazu muss das lookup_array aufsteigend sortiert sein. Der Standardwert für den Übereinstimmungstyp ist +1.

Wie benutze ich die Excel VBA Match Funktion?

Wir werden anhand einiger Beispiele lernen, wie man eine VBA Match Excel-Funktion verwendet.

Sie können diese VBA Match Excel-Vorlage hier herunterladen - VBA Match Excel-Vorlage

VBA Match Funktion - Beispiel # 1

Angenommen, wir haben folgende Daten:

Wir müssen herausfinden, wer aus dieser Liste zusammen mit der Position in Excel ein Gehalt von 30.000 Euro hat.

Obwohl wir dies in diesem Datensatz manuell konfigurieren können, denken Sie bitte an ein breiteres Bild. Was ist, wenn Sie Millionen von Zeilen und Spalten haben?

Führen Sie die folgenden Schritte aus, um die MATCH-Funktion in VBA zu verwenden.

Schritt 1: Definieren Sie eine Unterprozedur, indem Sie dem Makro einen Namen geben.

Code:

 Sub exmatch1 () End Sub 

Schritt 2: Nun möchten wir, dass unsere Ausgabe in Zelle E2 gespeichert wird. Beginnen Sie daher, den Code als Range ("E2") zu schreiben. Value =

Dies definiert den Ausgabebereich für unser Ergebnis.

Code:

 Sub exmatch1 () Range ("E2"). Value = End Sub 

Schritt 3: Verwenden Sie WorksheetFunction, um VBA-Funktionen verwenden zu können.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction End Sub 

Schritt 4: WorksheetFunction verfügt über eine Reihe von Funktionen, auf die unter VBA zugegriffen werden kann. Fügen Sie nach "WorksheetFunction" einen Punkt (.) Ein, um auf die Funktionen zuzugreifen. Wählen Sie die MATCH-Funktion aus der Dropdown-Liste.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match End Sub 

Schritt 5: Geben Sie nun die Argumente für die Funktion MATCH an. Wie Lookup_value. Unser Lookup_value wird in Zelle D2 gespeichert, wie im folgenden Screenshot gezeigt. Sie können mit der Range-Funktion unter der MATCH-Funktion darauf zugreifen.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, End Sub 

Schritt 6: Das zweite Argument ist Lookup_array. Dies ist der Tabellenbereich, in dem Sie die Position von Lookup_value ermitteln möchten. In unserem Fall ist es (B1: B11). Stellen Sie dieses Array mit der Range-Funktion bereit.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), End Sub 

Schritt 7: Das letzte Argument für diesen Code ist Match_type. Wir wollten eine exakte Übereinstimmung für Lookup_value im angegebenen Bereich haben. Geben Sie daher Null (0) als übereinstimmendes Argument an.

Code:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("B1: B11"), 0) End Sub 

Schritt 8: Führen Sie diesen Code aus, indem Sie die Taste F5 oder Ausführen drücken und die Ausgabe anzeigen.

Sie können in Zelle E2 sehen, dass es einen numerischen Wert (6) gibt, der die Position des Werts von Zelle D2 bis Bereich B1: B11 anzeigt.

Beispiel # 2 - VBA Match Funktion mit Loops

Es ist einfach, wenn Sie nur einen Wert im gesamten Bereich suchen müssen. Aber was ist, wenn Sie die Position für eine Reihe von Zellen überprüfen müssen? Es wäre hart für eine Person, die hinzufügt, ihn zu bitten, die separaten Codes für jede Zelle zu schreiben.

In solchen Fällen kann die MATCH-Funktion mit loop verwendet werden (insbesondere in unserem Fall mit for loop). Sehen Sie sich die folgenden Schritte an, um eine Vorstellung davon zu bekommen, wie wir die MATCH-Funktion mit loop verwenden.

Schritt 1: Definieren Sie eine Unterprozedur, indem Sie dem Makro einen Namen geben.

Code:

 Sub Example2 () End Sub 

Schritt 2: Definieren Sie eine Ganzzahl, die den Wert für mehrere Zellen in der Schleife enthalten kann.

Code:

 Sub Example2 () Dim i As Integer End Sub 

Schritt 3: Verwenden Sie die For-Schleife für die Ganzzahl, um die verschiedenen Nachschlagewerte zu verwenden, deren Position in Spalte E gespeichert werden kann.

Code:

 Sub Example2 () Dim i As Integer Für i = 2 To 6 End Sub 

Schritt 4: Verwenden Sie jetzt dieselbe Methode wie in Beispiel 1, nur dass anstelle von Range die Funktion Cells verwendet wird und im Gegensatz zum ersten Beispiel ein zweidimensionales Array (Zeilen und Spalten) verwendet wird.

Code:

 Sub Example2 () Dim i As Integer für i = 2 bis 6 Zellen (i, 5) .Value = WorksheetFunction.Match (Zellen (i, 4) .Value, Range ("B2: B11"), 0) Next i End Sub 

Hier speichert Cells (i, 5) .Value = den Wert der resultierenden Positionen in jeder Zeile von 2 bis 6 (Zeile i) in Spalte E (Spalte Nummer 5). Unter Match function prüft Cells (i, 4) .Values ​​auf jeden Lookup_value, der in den Zeilen 2 bis 6 in der 4. Spalte vorhanden ist. Dieser Suchwert wird dann in Array B2: B11 im Excel-Sheet gesucht, wo Daten vorhanden sind und relative Positionen in jeder Zeile von Spalte 5 (Spalte E) gespeichert werden können.

Schritt 5: Führen Sie diesen Code aus, indem Sie gleichzeitig die Taste F5 oder Ausführen drücken und das Ergebnis anzeigen. Es wird fast die Magie in einem Stück Code mit einer einzigen Zeile herausziehen.

In diesem Artikel haben wir gelernt, wie wir die MATCH-Funktion unter VBA als Sonderfall von WorksheetFunction verwenden können.

Dinge, an die man sich erinnern sollte

  • Lookup_value kann eine Zahl / ein Text / ein logischer Wert sein oder eine Zellreferenz auf eine Zahl, einen Text oder einen logischen Wert.
  • Standardmäßig kann Match_type als 1 betrachtet werden, wenn es weggelassen oder nicht erwähnt wird.
  • Ähnlich wie die Excel MATCH-Funktion gibt VBA MATCH auch die relative Position eines Lookup_value unter Lookup_array und nicht den Wert selbst an.
  • Wird keine Übereinstimmung gefunden, wird eine relative Excel-Zelle mit # N / A gefüllt.
  • Wenn die Funktion MATCH für Textwerte verwendet wird, kann nicht zwischen Groß- und Kleinbuchstaben unterschieden werden. Zum Beispiel sind Lalit und Lalit gleich. LALIT und lalit auch.
  • Platzhalterzeichen können verwendet werden, wenn Sie die genaue Übereinstimmung ermitteln (dh der Übereinstimmungstyp ist Null). Mit dem Platzhalter-Sternchen (*) können Sie eine Reihe von Zeichen ermitteln. Während ein Fragezeichen (?) Verwendet werden kann, um ein einzelnes Zeichen herauszufinden.

Empfohlene Artikel

Dies ist eine Anleitung zur VBA-Match-Funktion. Hier werden VBA Match und die Verwendung der Excel VBA Match-Funktion zusammen mit praktischen Beispielen und einer herunterladbaren Excel-Vorlage erläutert. Sie können auch unsere anderen Artikelvorschläge durchgehen -

  1. Vollständige Anleitung zu VBA On Error
  2. Wie verwende ich das VBA-Zahlenformat?
  3. VBA VLOOKUP Funktion mit Beispielen
  4. Erstellen einer VBA-Funktion in Excel
  5. Excel Match Funktion (Beispiele)

Kategorie: