VBA Index Match

Indexmatchning i VBA

INDEX & MATCH-funktion i VBA-kombination är alternativet till VLOOKUP-funktionen i Excel. I VBA gör vi inte lyxen att använda INDEX & MATCH-funktionen direkt eftersom dessa två funktioner inte är en del av de VBA-inbyggda funktionerna. Vi kan dock fortfarande använda dem som en del av kalkylbladets funktionsklass.

Hur använder man Index Match i VBA? (Steg för steg)

Du kan ladda ner denna VBA Indexmatch Excel-mall här - VBA Indexmatch Excel-mall

Titta till exempel på nedanstående data.

I ovanstående data är uppslagsvärdet avdelningsnamnet, och baserat på detta avdelningsnamn behöver vi extrahera lönebeloppet.

Men problemet här är att resultatkolumnen finns i den första och uppslagsvärdekolumnen är därefter resultatkolumnen. I det här fallet kan VLOOKUP inte hämta lönebeloppet eftersom VLOOKUP bara fungerar från höger till vänster inte från vänster till höger.

I dessa fall måste vi använda kombinationsformeln för VBA INDEX & MATCH-funktionen. Låt oss utföra uppgiften att hitta lönebeloppet för varje avdelning i VBA-koden.

Steg 1: Starta solrutinen.

Steg 2: Förklara variabeln VBA Integer.

Koda:

 Sub INDEX_MATCH_Example1 () Dim k Som heltal End Sub 

Steg 3: Öppna nu för nästa slinga i VBA.

Koda:

 Sub INDEX_MATCH_Example1 () Dim k Som heltal För k = 2 till 5 Nästa k Avslut Sub 

Steg 4: Utför formeln i VBA-slingan. I den femte kolumnen måste vi tillämpa formeln, så koden är CELLS (k, 5) .Värde =

Koda:

 Sub INDEX_MATCH_Example1 () Dim k som heltal För k = 2 till 5 celler (k, 5). Värde = Nästa k Avsluta sub 

Steg 5: I den cellen måste vi tillämpa VBA INDEX & MATCH-formeln. Som jag sa att vi måste använda dessa funktioner som kalkylfunktion i vba-klass, så öppna kalkylarkfunktionsklassen.

Koda:

Sub INDEX_MATCH_Example1 () Dim k som heltal för k = 2 till 5 celler (k, 5) .Value = WorksheetFunction. Nästa k Avsluta Sub

Steg 6: Efter att ha gått in i arbetsarkets funktionsklass kan vi se alla tillgängliga kalkylfunktioner så välj INDEX-funktionen.

Koda:

 Sub INDEX_MATCH_Example1 () Dim k som heltal För k = 2 till 5 celler (k, 5) .Value = WorksheetFunction.Index (Next k End Sub 

Steg 7: När du använder kalkylfunktionen i VBA måste du vara helt säker på argumenten med formeln. Det första argumentet är array dvs från vilken kolumn vi behöver resultatet, i det här fallet behöver vi resultatet från A2 till A5.

Koda:

 Sub INDEX_MATCH_Example1 () Dim k som heltal För k = 2 till 5 celler (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub 

Steg 8: Nästa är från vilket radnummer vi behöver resultatet. Som vi har sett det tidigare exemplet kan vi inte manuellt ange radnumret varje gång. Så använd MATCH-funktionen.

För att kunna använda MATCH-funktionen en gång till måste vi öppna klassen Worksheet Function.

Koda:

 Sub INDEX_MATCH_Example1 () Dim k som heltal För k = 2 till 5 celler (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub 

Steg 9: MATCH-funktioner första argumentet är LOOKUP-värde, här är vårt uppslagsvärde avdelningsnamn, det finns där i cellerna (2, 4).

Eftersom varje gång radnummer måste ändras kan vi leverera variabeln "k" istället för manuell rad nummer 2. Celler (k, 4) .Värde

Koda:

 Sub INDEX_MATCH_Example1 () Dim k som heltal För k = 2 till 5 celler (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Next k Avsluta sub 

Steg 10: Därefter måste vi nämna avdelningens värdeintervall, dvs. Range (“B2: B5”).

Koda:

 Sub INDEX_MATCH_Exempel1 () Dim k som heltal För k = 2 till 5 celler (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5) .Value, Range) ("B2: B5"), 

Nästa k

Avsluta sub

Steg 11: Sätt sedan argumentet som 0 eftersom vi behöver en exakt matchning och stänger parenteserna.

Koda:

 Sub INDEX_MATCH_Example1 () Dim k som heltal För k = 2 till 5 celler (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 4) .Value, Range) ("B2: B5"), 0)) 

Nästa k

Avsluta sub

Okej, vi är klara med kodningsdelen. Låt oss köra koden för att få resultatet i kolumn 5.

Så vi fick resultatet.

Vi kan använda denna formel som ett alternativ till VLOOKUP-funktionen.