VBA Match

Samma som vi har Index och Match i kalkylbladet som uppslagsfunktioner kan vi också använda Matchfunktioner i VBA som en uppslagsfunktion, den här funktionen är en kalkylfunktion och den nås av applikationen. kalkylbladsmetod och eftersom det är en kalkylfunktion liknar argumenten för Match-funktion kalkylarkfunktionen.

VBA Match-funktion

VBA Match-funktionen letar efter position eller radnummer för uppslagsvärdet i tabelluppsättningen, dvs i huvud exceltabellen.

I ett kalkylblad är uppslagsfunktioner en integrerad del av excel. Några av de viktiga uppslagsfunktionerna är VLOOKUP, HLOOKUP, INDEX och MATCH. Tyvärr har vi inte dessa funktioner som VBA-funktioner. Vi kan dock använda dem som kalkylfunktioner i VBA.

I den här artikeln visar jag dig hur du använder en av kalkylbladets uppslagsfunktion MATCH i VBA som en kalkylfunktion.

Hur använder jag MATCH-funktionen i VBA Excel?

Vi visar ett enkelt exempel på hur du använder Excel MATCH-funktionen i VBA.

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

Exempel nr 1

I VBA kan vi använda denna MATCH-formel i Excel som kalkylfunktion. Följ stegen nedan för att använda MATCH-funktionen i VBA.

Steg 1: Skapa en delprocedur genom att ge ett makronamn.

Koda:

 Undermatch_exempel1 ()

Steg 2: I E2-cellen behöver vi resultatet, så starta koden som Range (“E2”)

Koda:

 Sub Match_Example1 () Range ("E2"). Värde = End Sub 

Steg 3: I E2 bör cellvärdet vara resultatet av MATCH-formeln. Så för att komma åt VBA MATCH-funktionen måste vi först använda egenskapen "WorksheetFunction". I den här egenskapen får vi alla tillgängliga kalkylbladsfunktionslistor.

Steg 4: Välj MATCH-funktion här.

Koda:

 Sub Match_Example1 () Range ("E2"). Värde = WorksheetFunction.Match (End Sub 

Steg 5: Nu börjar problemet eftersom vi inte får exakt syntaxnamn utan vi får syntax som "Arg1, Arg2, Arg3" så här. Så du måste vara helt säker på syntaxer här.

Vårt första argument är LOOKUP VALUE, vårt LOOKUP VALUE finns i cellen D2, så välj cellen som Range (“D2”) .

Koda:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, End Sub 

Steg 6: Det andra argumentet är Table Array, vårt tabellarrayområde är från A2 till A10. Så välj intervallet som "Range (" A2: A10 ")"

Koda:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), End Sub 

Steg 7: Nu är det sista argumentet MATCH TYPE. Vi behöver en exakt matchning, så ange argumentvärdet som noll.

Koda:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), 0) End Sub 

Kör makrot så får vi positionen för vad som helst årets namn finns i cellen D2.

Exempel # 2 - VBA-match från ett annat ark

Antag att samma uppsättning data från ovan finns på två olika ark. Till exempel finns tabellmatrisen i arknamnet ”Data Sheet” och Lookup Value finns i arknamnet ”Resultat Sheet”.

I det här fallet måste vi hänvisa kalkylblad med dess namn innan vi hänvisar till intervallen. Nedan följer en uppsättning koder med arknamn.

Koda:

 Sub Match_Example2 () Sheets ("Result Sheet") .Range ("E2"). Value = WorksheetFunction.Match (Sheets ("Result Sheet"). Range ("D2"). Value, Sheets ("Data Sheet"). Range ("A2: A10"), 0) End Sub 

Exempel # 3 - VBA-matchningsfunktion med loopar

Om resultatet vi vill ha i en enda cell är det inget problem, men om resultatet måste komma i mer än en cell måste vi använda en VBA-loop för att få resultatet i alla celler.

Antag att du har en sådan information.

I dessa fall är det en härlig uppgift att skriva långa koder, så vi byter till slingor. Nedan är den uppsättning kod som kommer att göra jobbet för oss.

Koda:

 Sub Match_Example3 () Dim k som heltal För k = 2 till 10 celler (k, 5) .Value = WorksheetFunction.Match (Cells (k, 4) .Value, Range ("A2: A10"), 0) Next k End Sub 

Denna uppsättning koder får resultatet på bara ett ögonblick.