VBA-indexovereenkomst

Index Match in VBA

INDEX & MATCH-functie in VBA-combinatie is het alternatief voor VLOOKUP-functie in Excel. In VBA hebben we niet de luxe om de INDEX & MATCH-functie rechtstreeks te gebruiken, omdat deze twee functies geen deel uitmaken van de ingebouwde VBA-functies. We kunnen ze echter nog steeds gebruiken als onderdeel van de werkbladfunctieklasse.

Hoe Index Match in VBA te gebruiken? (Stap voor stap)

U kunt deze VBA Index Match Excel-sjabloon hier downloaden - VBA Index Match Excel-sjabloon

Bekijk bijvoorbeeld de onderstaande gegevens.

In de bovenstaande gegevens is de opzoekwaarde de afdelingsnaam en op basis van deze afdelingsnaam moeten we het salarisbedrag extraheren.

Maar het probleem hier is dat de resultaatkolom in de eerste kolom staat en de opzoekwaardekolom daarna de resultaatkolom. In dit geval kan VERT.ZOEKEN het salarisbedrag niet ophalen omdat VERT.ZOEKEN alleen van rechts naar links werkt, niet van links naar rechts.

In deze gevallen moeten we de combinatieformule van de VBA INDEX & MATCH-functie gebruiken. Laten we de taak uitvoeren om het salarisbedrag van elke afdeling in de VBA-code te vinden.

Stap 1: Start de zonneroutine.

Stap 2: Declareer de VBA Integer-variabele.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer End Sub 

Stap 3: Open nu For Next Loop in VBA.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 To 5 Next k End Sub 

Stap 4: Voer de formule uit in de VBA-lus. In de 5e kolom moeten we de formule toepassen, dus de code is CELLS (k, 5). Waarde =

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 tot 5 cellen (k, 5). Value = Next k End Sub 

Stap 5: In die cel moeten we de VBA INDEX & MATCH-formule toepassen. Zoals ik al zei, moeten we deze functies gebruiken als werkbladfunctie in de vba-klasse, dus open de werkbladfunctieklasse.

Code:

Sub INDEX_MATCH_Example1 () Dim k As Integer Voor k = 2 tot 5 cellen (k, 5) .Value = WorksheetFunction. Volgende k End Sub

Stap 6: Na het invoeren van de werkbladfunctieklasse kunnen we alle beschikbare werkbladfuncties zien, dus selecteer de INDEX-functie.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 tot 5 cellen (k, 5) .Value = WorksheetFunction.Index (Next k End Sub 

Stap 7: Tijdens het gebruik van de werkbladfunctie in VBA moet u absoluut zeker zijn van de argumenten van de formule. Het eerste argument is array, dwz van welke kolom we het resultaat nodig hebben, in dit geval hebben we het resultaat van A2 tot A5 nodig.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 tot 5 cellen (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub 

Stap 8: De volgende is van welk rijnummer we het resultaat nodig hebben. Zoals we in het eerdere voorbeeld hebben gezien, kunnen we het rijnummer niet elke keer handmatig invoeren. Gebruik dus de MATCH-functie.

Om de MATCH-functie nogmaals te gebruiken, moeten we de klasse Worksheet Function openen.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 to 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub 

Stap 9: MATCH-functies eerste argument is LOOKUP-waarde, hier is onze lookup-waarde afdelingsnamen, deze staat in de cellen (2, 4).

Omdat elke keer dat het rijnummer moet veranderen, kunnen we de variabele "k" opgeven in plaats van handmatig rijnummer 2. Cellen (k, 4) .Waarde

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 tot 5 cellen (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Next k End Sub 

Stap 10: Vervolgens moeten we het waardebereik van de afdeling vermelden, dwz bereik ("B2: B5").

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer For k = 2 to 5 Cells (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Range ("B2: B5"), 

Volgende k

Einde Sub

Stap 11: Zet vervolgens het argument als 0 omdat we een exacte overeenkomst nodig hebben en sluit de haakjes.

Code:

 Sub INDEX_MATCH_Example1 () Dim k As Integer voor k = 2 tot 5 cellen (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cellen (k, 4) .Value, Range ("B2: B5"), 0)) 

Volgende k

Einde Sub

Ok, we zijn klaar met het coderingsgedeelte. Laten we de code uitvoeren om het resultaat in kolom 5 te krijgen.

Dus we hebben het resultaat.

We kunnen deze formule gebruiken als alternatief voor de functie VERT.ZOEKEN.