VBA-Indexübereinstimmung

Indexübereinstimmung in VBA

Die INDEX & MATCH-Funktion in der VBA-Kombination ist die Alternative zur VLOOKUP-Funktion in Excel. In VBA haben wir nicht den Luxus, die INDEX & MATCH-Funktion direkt zu verwenden, da diese beiden Funktionen nicht Teil der in VBA integrierten Funktionen sind. Wir können sie jedoch weiterhin als Teil der Arbeitsblattfunktionsklasse verwenden.

Wie verwende ich Index Match in VBA? (Schritt für Schritt)

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

Schauen Sie sich zum Beispiel die folgenden Daten an.

In den obigen Daten ist der Suchwert der Abteilungsname, und basierend auf diesem Abteilungsnamen müssen wir den Gehaltsbetrag extrahieren.

Das Problem hierbei ist jedoch, dass sich die Ergebnisspalte in der ersten und die Suchwertspalte danach in der Ergebnisspalte befindet. In diesem Fall kann VLOOKUP den Gehaltsbetrag nicht abrufen, da VLOOKUP nur von rechts nach links und nicht von links nach rechts funktioniert.

In diesen Fällen müssen wir die Kombinationsformel der Funktion VBA INDEX & MATCH verwenden. Lassen Sie uns die Aufgabe ausführen, den Gehaltsbetrag jeder Abteilung im VBA-Code zu ermitteln.

Schritt 1: Starten Sie die Sonnenroutine.

Schritt 2: Deklarieren Sie die Variable VBA Integer.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer End Sub 

Schritt 3: Öffnen Sie nun For Next Loop in VBA.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Next k End Sub 

Schritt 4: Führen Sie innerhalb der VBA-Schleife die Formel aus. In der 5. Spalte müssen wir die Formel anwenden, daher lautet der Code CELLS (k, 5) .Value =

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = Next k End Sub 

Schritt 5: In dieser Zelle müssen wir die VBA INDEX & MATCH-Formel anwenden. Wie bereits erwähnt, müssen diese Funktionen als Arbeitsblattfunktion in der vba-Klasse verwendet werden. Öffnen Sie daher die Arbeitsblattfunktionsklasse.

Code:

Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = WorksheetFunction. Weiter k End Sub

Schritt 6: Nach Eingabe der Arbeitsblattfunktionsklasse werden alle verfügbaren Arbeitsblattfunktionen angezeigt. Wählen Sie daher die INDEX-Funktion aus.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = WorksheetFunction.Index (Next k End Sub 

Schritt 7: Während Sie die Arbeitsblattfunktion in VBA verwenden, müssen Sie sich der Argumente der Formel absolut sicher sein. Das erste Argument ist Array, dh aus welcher Spalte wir das Ergebnis benötigen, in diesem Fall benötigen wir das Ergebnis von A2 bis A5.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = WorksheetFunction.Index (Bereich ("A2: A5"), Next k End Sub 

Schritt 8: Als nächstes sehen Sie, von welcher Zeilennummer wir das Ergebnis benötigen. Wie wir im vorherigen Beispiel gesehen haben, können wir die Zeilennummer nicht jedes Mal manuell eingeben. Verwenden Sie also die MATCH-Funktion.

Um die MATCH-Funktion wieder verwenden zu können, müssen wir die Worksheet Function-Klasse öffnen.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = WorksheetFunction.Index (Bereich ("A2: A5"), WorksheetFunction.Match (Next k End Sub 

Schritt 9: Das erste Argument für MATCH-Funktionen ist der LOOKUP-Wert. Hier ist unser Lookup-Wert Abteilungsnamen. Er befindet sich in den Zellen (2, 4).

Da sich die Zeilennummer jedes Mal ändern muss, können wir anstelle der manuellen Zeilennummer 2 die Variable „k“ angeben. Zellen (k, 4) .Wert

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = WorksheetFunction.Index (Bereich ("A2: A5"), WorksheetFunction.Match (Zellen (k, 5) .Value, Next k End Sub 

Schritt 10: Als nächstes müssen wir den Abteilungswertbereich, dh den Bereich („B2: B5“), erwähnen.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = WorksheetFunction.Index (Bereich ("A2: A5"), WorksheetFunction.Match (Zellen (k, 5) .Value, Range ("B2: B5"), 

Weiter k

End Sub

Schritt 11: Setzen Sie als nächstes das Argument auf 0, da wir eine genaue Übereinstimmung benötigen, und schließen Sie die Klammern.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer Für k = 2 bis 5 Zellen (k, 5) .Value = WorksheetFunction.Index (Bereich ("A2: A5"), WorksheetFunction.Match (Zellen (k, 4) .Value, Range ("B2: B5"), 0)) 

Weiter k

End Sub

Ok, wir sind mit dem Codierungsteil fertig. Lassen Sie uns den Code ausführen, um das Ergebnis in Spalte 5 zu erhalten.

Also haben wir das Ergebnis.

Wir können diese Formel als Alternative zur VLOOKUP-Funktion verwenden.