Indeks match i VBA
INDEX & MATCH-funktion i VBA-kombination er alternativet til VLOOKUP-funktionen i Excel. I VBA har vi ikke den luksus at bruge INDEX & MATCH-funktionen direkte, fordi disse to funktioner ikke er en del af de indbyggede VBA-funktioner. Vi kan dog stadig bruge dem som en del af regnearkets funktionsklasse.

Sådan bruges Index Match i VBA? (Trin for trin)
Se f.eks. Nedenstående data.

I ovenstående data er opslagsværdien afdelingens navn, og baseret på dette afdelingsnavn er vi nødt til at udtrække lønbeløbet.
Men problemet her er, at resultatkolonnen er der i den første, og opslagsværdikolonnen er derefter resultatkolonnen. I dette tilfælde kan VLOOKUP ikke hente lønbeløbet, fordi VLOOKUP kun fungerer fra højre til venstre, ikke fra venstre mod højre.
I disse tilfælde er vi nødt til at bruge kombinationsformlen til VBA INDEX & MATCH-funktionen. Lad os udføre opgaven med at finde lønningsbeløbet for hver afdeling i VBA-koden.
Trin 1: Start solrutinen.
Trin 2: Erklær VBA Integer-variablen.
Kode:
Sub INDEX_MATCH_Example1 () Dim k Som Integer End Sub

Trin 3: Åbn nu for næste løkke i VBA.
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 Næste k Afslut sub

Trin 4: Udfør formlen inde i VBA-sløjfen. I den femte kolonne skal vi anvende formlen, så koden er CELLS (k, 5) .Værdi =
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5). Værdi = Næste k Afslut sub

Trin 5: I den celle skal vi anvende VBA INDEX & MATCH-formlen. Som jeg fortalte, skal vi bruge disse funktioner som regnearkfunktion i VBA-klasse, så åbn regnearkets funktionsklasse.
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5) .Value = WorksheetFunction. Næste k Afslut Sub

Trin 6: Efter indtastning af regnearkets funktionsklasse kan vi se alle de tilgængelige regnearksfunktioner, så vælg INDEX-funktionen.
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5). Værdi = WorksheetFunction.Index (Next k End Sub

Trin 7: Mens du bruger regnearkfunktion i VBA, skal du være helt sikker på argumenterne for formlen. Det første argument er array dvs. fra hvilken kolonne vi har brug for resultatet. I dette tilfælde har vi brug for resultatet fra A2 til A5.
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5) .Value = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub

Trin 8: Næste er fra hvilket række nummer vi har brug for resultatet. Som vi har set i det tidligere eksempel, kan vi ikke manuelt angive række nummer hver gang. Så brug MATCH-funktionen.
For at bruge MATCH-funktionen igen skal vi åbne klassen Funktionsarkfunktion.
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5) .Værdi = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub

Trin 9: MATCH-funktioner første argument er LOOKUP-værdien; her er vores opslagsværdi afdelingsnavne; den er der i cellerne (2, 4).
Da hver gang række nummer skal ændres, kan vi levere variablen “k” i stedet for manuel række nummer 2. Celler (k, 4) .Værdi
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5). Værdi = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5). Value, Next k Afslut Sub

Trin 10: Dernæst skal vi nævne afdelingens værdiområde, dvs. Range (“B2: B5”).
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5). Værdi = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5). Value, Range) ("B2: B5"),
Næste k
Afslut sub
Trin 11: Sæt derefter argumentet som 0, fordi vi har brug for en nøjagtig matchning og luk parenteserne.
Kode:
Sub INDEX_MATCH_Example1 () Dim k som heltal For k = 2 til 5 celler (k, 5) .Værdi = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 4) .Value, Range) ("B2: B5"), 0))
Næste k
Afslut sub
Ok, vi er færdige med kodningsdelen. Lad os køre koden for at få resultatet i kolonne 5.

Så vi fik resultatet.
Vi kan bruge denne formel som et alternativ til VLOOKUP-funktionen.