Excel VBA-matchfunktion

VBA Match-funktion ser efter positionen eller rækkenummeret for opslagværdien i tabellen array, dvs. i den vigtigste excel-tabel. For eksempel VLOOKUP, HLOOKUP, MATCH, INDEX osv. Dette er de opslagsfunktioner, der er vigtigere end andre. Desværre har vi ikke de samme funktioner, der er tilgængelige i VBA til at gøre tingene lettere. Vi kan dog bruge disse funktioner som regnearkfunktioner under VBA-scriptet for at gøre vores liv lettere.

I dag er vi ved at lære MATCH-funktionen, der kan bruges som regnearkfunktion under VBA.

VBA Match har samme brug som Match-formlen i Excel. Denne funktion i MS Excel VBA finder et match inden for en matrix med henvisning til opslagværdien og udskriver dens placering. Denne funktion bliver nyttig, når du har brug for at evaluere dataene baseret på bestemte værdier. For eksempel er VBA MATCH nyttigt, hvis du har lønningsdata for medarbejdere, og du har brug for at finde ud af den numeriske position for en medarbejder i dine data, der har løn mindre end / større end / svarer til en bestemt værdi. Det er virkelig nyttigt at analysere dataene, og også en kodelinje kan automatisere tingene for dig.

Syntaks for matchfunktion i Excel VBA

VBA Match har følgende syntaks:

Hvor,

  • Arg1 - Lookup_value - Den værdi, du har brug for at slå op i en given matrix.
  • Arg2 - Lookup_array - en matrix med rækker og kolonner, der indeholder muligt Lookup_value.
  • Arg3 - Match_type - Matchtypen, der tager værdien -1, 0 eller 1.

Hvis match_type = -1 betyder, at MATCH-funktionen finder ud af den mindste værdi, der er større end eller lig med lookup_value. For at dette skal ske, skal lookup_array sorteres i faldende rækkefølge.

Hvis match_type = 0 betyder, at MATCH-funktionen finder ud af værdien, der er nøjagtigt den samme som for lookup_value.

Hvis match_type = +1 betyder det, at MATCH-funktionen finder ud af den største værdi, som er mindre end eller lig med lookup_value. For at dette skal ske, skal lookup_array sorteres i stigende rækkefølge. Standardværdien for matchen er +1.

Sådan bruges Excel VBA Match-funktion?

Vi lærer, hvordan man bruger en VBA Match Excel-funktion med få eksempler.

Du kan downloade denne VBA Match Excel-skabelon her - VBA Match Excel-skabelon

VBA-matchfunktion - eksempel # 1

Antag, at vi har data som vist nedenfor:

Vi er nødt til at finde ud af, hvem der på denne liste har løn € 30.000 sammen med position i Excel.

Selvom vi i dette datasæt manuelt kan konfigurere dette, skal du tænke på et bredere billede, hvad nu hvis du har millioner af rækker og kolonner?

Følg nedenstående trin for at bruge MATCH-funktionen i VBA.

Trin 1: Definer en underprocedure ved at give et navn til makroen.

Kode:

 Sub exmatch1 () End Sub 

Trin 2: Nu ønsker vi, at vores output skal gemmes i celle E2. Begynd derfor at skrive koden som Range (“E2”)

Dette definerer outputområdet for vores resultat.

Kode:

 Sub exmatch1 () Range ("E2"). Værdi = End Sub 

Trin 3: Brug WorksheetFunction for at kunne bruge VBA-funktioner.

Kode:

 Sub exmatch1 () Range ("E2"). Værdi = WorksheetFunction End Sub 

Trin 4: WorksheetFunction har en række funktioner, der kan fås adgang til og bruges under VBA. Efter “WorksheetFunction”, skal du sætte en prik (.), Og så vil du kunne få adgang til funktionerne. Vælg MATCH-funktionen fra rullelisten.

Kode:

 Sub exmatch1 () Range ("E2"). Værdi = WorksheetFunction.Match End Sub 

Trin 5: Giv nu argumenterne til MATCH-funktionen. Som Lookup_value. Vores look_value gemmes i celle D2 som vist på nedenstående skærmbillede. Du kan få adgang til den under MATCH-funktionen ved hjælp af Range-funktionen.

Kode:

 Sub exmatch1 () Range ("E2"). Værdi = WorksheetFunction.Match (Range ("D2"). Værdi, End Sub 

Trin 6: Det andet argument er Lookup_array. Dette er det tabelområde, inden for hvilket du vil finde ud af placeringen af ​​Lookup_value. I vores tilfælde er det (B1: B11). Angiv denne matrix ved hjælp af Range-funktionen.

Kode:

 Sub exmatch1 () Range ("E2"). Værdi = WorksheetFunction.Match (Range ("D2"). Værdi, Range ("B1: B11"), End Sub 

Trin 7: Det sidste argument for, at denne kode skal fungere, er Match_type. Vi ønskede at have et nøjagtigt match for Lookup_value i givet interval> Giv derfor Nul (0) som et matchende argument.

Kode:

 Sub exmatch1 () Range ("E2"). Værdi = WorksheetFunction.Match (Range ("D2"). Værdi, Range ("B1: B11"), 0) End Sub 

Trin 8: Kør denne kode ved at trykke på F5 eller Run-knappen og se output.

Du kan se i celle E2, der er en numerisk værdi (6), der viser placeringen af ​​værdien fra celle D2 gennem område B1: B11.

Eksempel # 2 - VBA-matchfunktion med sløjfer

Det er let, når du kun har en værdi at søge efter i hele serien. Men hvad nu hvis du har brug for at kontrollere placeringen for et antal celler? Det ville være hårdt for en person, der tilføjer at bede ham om at skrive de separate koder for hver celle.

I sådanne tilfælde kan MATCH-funktion bruges med loop (især For loop i vores tilfælde). Se følgende trin for at få en idé om, hvordan vi bruger MATCH-funktion med loop.

Trin 1: Definer en underprocedure ved at give et navn til makroen.

Kode:

 Subeksempel2 () Slut Sub 

Trin 2: Definer et heltal, der kan indeholde værdien for flere celler i løkken.

Kode:

 Undereksempel2 () Dim i som heltal slut sub 

Trin 3: Brug For loop på heltalet til at bruge de forskellige opslagværdier, hvis placering kan gemmes i kolonne E.

Kode:

 Undereksempel2 () Dim i som heltal for i = 2 til 6 slut sub 

Trin 4: Brug nu den samme metode, som vi brugte i eksempel 1, bare i stedet for rækkevidde, bruger vi Cells-funktionen og bruger en to-dimensionel matrix (Rækker og kolonner) i modsætning til det første eksempel.

Kode:

 Undereksempel2 () Dim i som heltal for i = 2 til 6 celler (i, 5). Værdi = regnearkFunktion.Match (celler (i, 4). Værdi, rækkevidde ("B2: B11"), 0) Næste i slutning Sub 

Her celler (i, 5). Værdi = gemmer værdien af ​​de resulterende positioner i hver række fra 2 til 6 (række i) i kolonne E (kolonne nummer 5). Under Match-funktion kontrollerer celler (i, 4). Værdier for hver Lookup_value, der findes i række 2 til 6 i den 4. kolonne. Denne søgningsværdi søgte derefter i Array B2: B11 i excelark, hvor data er til stede og relative positioner kan gemmes i hver række i kolonne 5 (kolonne E).

Trin 5: Kør denne kode ved at trykke på F5 eller Run-knappen samtidigt og se resultatet. Det vil næsten trække magien ud i et stykke kode med en enkelt linje.

I denne artikel lærte vi, hvordan vi kan bruge MATCH-funktionen under VBA som et specielt tilfælde af WorksheetFunction.

Ting at huske

  • Lookup_value kan være nummer / tekst / logisk værdi eller kan være en cellehenvisning til et nummer, tekst eller logisk værdi.
  • Som standard kan Match_type betragtes som 1, hvis udeladt / ikke nævnt.
  • Som ligner Excel MATCH-funktion giver VBA MATCH også den relative placering af en Lookup_value under Lookup_array og ikke selve værdien.
  • Hvis en match ikke findes, vil en relativ excel-celle blive udfyldt med # N / A.
  • Hvis der bruges MATCH-funktion på tekstværdier, er den ikke i stand til at skelne mellem små og store bogstaver. For eksempel er Lalit og lalit ens. Så gør LALIT og lalit.
  • Jokertegn kan bruges, hvis du finder ud af det nøjagtige match (dvs. matchningstypen er nul). Wildcard-tegnstjerne (*) kan bruges til at finde ud af en række tegn. Mens et spørgsmålstegn (?) Kan bruges til at finde ud af et enkelt tegn.

Anbefalede artikler

Dette er en guide til VBA-matchfunktion. Her diskuterer vi VBA Match, og hvordan man bruger Excel VBA Match-funktion sammen med praktiske eksempler og downloadbar excel-skabelon. Du kan også gennemgå vores andre foreslåede artikler -

  1. Komplet guide til VBA ved fejl
  2. Sådan bruges VBA-nummerformat?
  3. VBA VLOOKUP-funktion med eksempler
  4. Oprettelse af VBA-funktion i Excel
  5. Excel-matchfunktion (eksempler)

Kategori: