Potrivirea indexului VBA - Cum se folosește funcția de potrivire a indexului în VBA (exemple)

Match Match în VBA

Funcția INDEX & MATCH în combinația VBA este alternativa la funcția VLOOKUP în excel. În VBA, nu avem luxul de a folosi funcția INDEX & MATCH direct, deoarece aceste două funcții nu fac parte din funcțiile încorporate VBA. Cu toate acestea, le putem folosi în continuare ca parte a clasei de funcții a foii de lucru.

Cum se utilizează potrivirea indexului în VBA? (Pas cu pas)

De exemplu, uitați-vă la datele de mai jos.

În datele de mai sus, valoarea de căutare este numele departamentului și, pe baza acestui nume de departament, trebuie să extragem suma salariului.

Dar problema aici este că coloana cu rezultate este acolo în prima, iar coloana cu valoarea de căutare este ulterior coloana cu rezultate. În acest caz, VLOOKUP nu poate prelua suma salariului deoarece VLOOKUP funcționează numai de la dreapta la stânga, nu de la stânga la dreapta.

În aceste cazuri, trebuie să folosim formula de combinație a funcției VBA INDEX & MATCH. Să îndeplinim sarcina de a găsi valoarea salariului pentru fiecare departament în codul VBA.

Pasul 1: Începeți rutina soarelui.

Pasul 2: Declarați variabila VBA Integer.

Cod:

Sub INDEX_MATCH_Example1 () Dim k As Integer End Sub

Pasul 3: Deschideți acum pentru Next Loop în VBA.

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 Următorul k Sfârșit Sub

Pasul 4: În interiorul buclei VBA, executați formula. În coloana a 5- a , trebuie să aplicăm formula, deci codul este CELLS (k, 5).

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 celule (k, 5). Valoare = Următorul k Finalizare Sub

Pasul 5: În acea celulă, trebuie să aplicăm formula VBA INDEX & MATCH. După cum am spus, trebuie să folosim aceste funcții ca Funcție foaie de lucru în clasa VBA, deci deschideți clasa de funcții foaie de lucru.

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 celule (k, 5). Valoare = Foaie de lucruFuncție. Următorul k Sfârșit Sub

Pasul 6: După introducerea clasei de funcții a foii de lucru, putem vedea toate funcțiile disponibile ale foii de lucru, deci selectați funcția INDEX.

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 celule (k, 5). Valoare = WorksheetFunction.Index (Următorul k End Sub

Pasul 7: În timp ce utilizați funcția de foaie de lucru în VBA, trebuie să fiți absolut sigur de argumentele formulei. Primul argument este array, adică din care coloană avem nevoie de rezultat. În acest caz, avem nevoie de rezultatul de la A2 la A5.

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 celule (k, 5). Valoare = WorksheetFunction.Index (Range ("A2: A5"), Next k End Sub

Pasul 8: Următorul este din ce număr de rând avem nevoie de rezultat. După cum am văzut în exemplul anterior, nu putem furniza manual numărul rândului de fiecare dată. Deci, utilizați funcția MATCH.

Pentru a utiliza încă o dată funcția MATCH, trebuie să deschidem clasa Function Sheet Function.

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 la 5 celule (k, 5). Valoare = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Next k End Sub

Pasul 9: funcția MATCH primul argument este valoarea LOOKUP; aici, valoarea noastră de căutare este numele departamentelor; este acolo în celule (2, 4).

Deoarece de fiecare dată când numărul rândului trebuie să se schimbe, putem furniza variabila „k” în locul rândului manual numărul 2. Celule (k, 4).

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 celule (k, 5). Valoare = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 5). Valoare, Next k End Sub

Pasul 10: În continuare, trebuie să menționăm intervalul de valori al departamentului, adică Range („B2: B5”).

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 celule (k, 5). Valoare = Foaie de lucruFuncție.Index (Interval ("A2: A5"), Foaie de lucruFuncție.Match (Celule (k, 5). Valoare, Interval („B2: B5”),

Următorul k

Sfârșitul Sub

Pasul 11: Apoi, puneți argumentul ca 0, deoarece avem nevoie de o potrivire exactă și închideți parantezele.

Cod:

Sub INDEX_MATCH_Example1 () Dim k Întreg pentru k = 2 până la 5 celule (k, 5). Valoare = WorksheetFunction.Index (Range ("A2: A5"), WorksheetFunction.Match (Cells (k, 4). Valoare, Range („B2: B5”), 0))

Următorul k

Sfârșitul Sub

Ok, am terminat cu partea de codare. Să rulăm codul pentru a avea rezultatul în coloana 5.

Deci, am obținut rezultatul.

Putem folosi această formulă ca alternativă la funcția VLOOKUP.

Articole interesante...