VBA Match

Ebenso wie wir Index und Match im Arbeitsblatt als Suchfunktionen haben, können wir auch Match-Funktionen in VBA als Suchfunktion verwenden. Diese Funktion ist eine Arbeitsblattfunktion und wird von der Anwendung aufgerufen. Arbeitsblattmethode und da es sich um eine Arbeitsblattfunktion handelt, ähneln die Argumente für die Match-Funktion der Arbeitsblattfunktion.

VBA-Match-Funktion

Die VBA-Übereinstimmungsfunktion sucht nach der Position oder Zeilennummer des Suchwerts im Tabellenarray, dh in der Haupttabelle von Excel.

In einem Arbeitsblatt sind Suchfunktionen ein wesentlicher Bestandteil von Excel. Einige der wichtigen Suchfunktionen sind VLOOKUP, HLOOKUP, INDEX und MATCH. Leider haben wir diese Funktionen nicht als VBA-Funktionen. Wir können sie jedoch als Arbeitsblattfunktionen in VBA verwenden.

In diesem Artikel werde ich Ihnen zeigen, wie Sie eine der Arbeitsblattsuchfunktionen MATCH in VBA als Arbeitsblattfunktion verwenden.

Wie verwende ich die MATCH-Funktion in VBA Excel?

Wir zeigen Ihnen ein einfaches Beispiel für die Verwendung der Excel MATCH-Funktion in VBA.

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

Beispiel 1

In VBA können wir diese MATCH-Formel in Excel als Arbeitsblattfunktion verwenden. Führen Sie die folgenden Schritte aus, um die MATCH-Funktion in VBA zu verwenden.

Schritt 1: Erstellen Sie eine Unterprozedur, indem Sie einen Makronamen angeben.

Code:

 Sub Match_Example1 ()

Schritt 2: In der E2-Zelle benötigen wir das Ergebnis. Starten Sie den Code als Bereich („E2“). Wert =

Code:

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

Schritt 3: In E2 sollte der Zellenwert das Ergebnis der MATCH-Formel sein. Um auf die VBA MATCH-Funktion zugreifen zu können, müssen wir zuerst die Eigenschaft „WorksheetFunction“ verwenden. In dieser Eigenschaft erhalten wir alle verfügbaren Arbeitsblattfunktionslisten.

Schritt 4: Wählen Sie hier die MATCH-Funktion.

Code:

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

Schritt 5: Jetzt beginnt das Problem, weil wir keinen genauen Syntaxnamen erhalten, sondern eine Syntax wie folgt: „Arg1, Arg2, Arg3“. Sie müssen sich hier also der Syntax absolut sicher sein.

Unser erstes Argument ist LOOKUP VALUE. Unser LOOKUP VALUE befindet sich in der Zelle D2. Wählen Sie daher die Zelle als Range („D2“) aus .

Code:

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

Schritt 6: Das zweite Argument ist Table Array. Unser Table Array-Bereich reicht von A2 bis A10. Wählen Sie also den Bereich als "Bereich (" A2: A10 ")"

Code:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), End Sub 

Schritt 7: Jetzt ist das letzte Argument MATCH TYPE. Wir brauchen eine genaue Übereinstimmung, also geben Sie den Argumentwert als Null ein.

Code:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), 0) End Sub 

Führen Sie das Makro aus. Wir erhalten die Position des Jahresnamens in der Zelle D2.

Beispiel 2 - VBA-Übereinstimmung von einem anderen Blatt

Angenommen, derselbe Datensatz von oben befindet sich auf zwei verschiedenen Blättern. Beispielsweise befindet sich das Tabellenarray im Blattnamen "Datenblatt" und der Suchwert im Blattnamen "Ergebnisblatt".

In diesem Fall müssen wir Arbeitsblätter anhand ihres Namens referenzieren, bevor wir auf die Bereiche verweisen. Unten finden Sie eine Reihe von Codes mit Blattnamen.

Code:

 Sub Match_Example2 () Sheets ("Ergebnisblatt") .Range ("E2"). Value = WorksheetFunction.Match (Sheets ("Ergebnisblatt") .Range ("D2"). Value, Sheets ("Datenblatt"). Bereich ("A2: A10"), 0) End Sub 

Beispiel 3 - VBA-Übereinstimmungsfunktion mit Schleifen

Wenn das gewünschte Ergebnis in einer einzelnen Zelle vorliegt, ist dies kein Problem. Wenn das Ergebnis jedoch in mehr als einer Zelle vorliegen muss, müssen wir eine VBA-Schleife verwenden, um das Ergebnis in allen Zellen zu erhalten.

Angenommen, Sie haben solche Daten.

In diesen Fällen ist es eine Herkulesaufgabe, lange Codes zu schreiben, daher wechseln wir zu Schleifen. Unten finden Sie den Code, der die Arbeit für uns erledigt.

Code:

 Sub Match_Example3 () Dim k As Integer Für k = 2 bis 10 Zellen (k, 5) .Value = WorksheetFunction.Match (Zellen (k, 4) .Value, Range ("A2: A10"), 0) Next k End Sub 

Mit diesem Codesatz erhalten Sie das Ergebnis im Handumdrehen.