VBA Match - Hur använder jag matchningsfunktion i VBA Excel? (Exempel)

Innehållsförteckning

Samma som vi har index och matchning i kalkylbladet som uppslagsfunktioner kan vi också använda matchningsfunktioner i VBA som en uppslagsfunktion, denna funktion är en kalkylfunktion och den nås av applikationen. kalkylbladsmetod och eftersom det är en kalkylfunktion liknar argumenten för matchningsfunktionen kalkylarkfunktionen.

VBA Match-funktion

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

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 uppslagningsfunktion MATCH i VBA som en kalkylbladfunktion.

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

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

Exempel 1

I VBA kan vi använda denna MATCH-formel i Excel som en 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 kalkylbladets funktionslista.

Steg 4: Välj MATCH-funktionen 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 det exakta syntaxnamnet. Snarare får vi 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 UPPFINNINGSVÄRDE 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 tabellmatrisintervall ä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å kommer vi att få 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, då ä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 stor 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.

Intressanta artiklar...