Excel VBA Match-funktion

VBA Match-funktion letar efter positionen eller radnumret för uppslagningsvärdet i tabellarrayen, dvs i huvud excel-tabellen. Till exempel VLOOKUP, HLOOKUP, MATCH, INDEX, etc. Dessa är de uppslagningsfunktioner som är viktigare än andra. Tyvärr har vi inte samma funktioner som finns tillgängliga i VBA för att underlätta saker. Vi kan dock använda dessa funktioner som kalkylfunktioner under VBA-skriptet för att göra våra liv enklare.

Idag är vi på väg att lära dig MATCH-funktionen som kan användas som en kalkylfunktion under VBA.

VBA Match har samma användning som Matchformeln i Excel. Den här funktionen i MS Excel VBA hittar en matchning i en matris med referens till uppslagningsvärdet och skriver ut dess position. Denna funktion blir användbar när du behöver utvärdera data baserat på vissa värden. Till exempel är VBA MATCH bra om du har lönedata för anställda och du måste ta reda på den anställdas numeriska position i dina uppgifter som har lön mindre än / större än / lika med ett visst värde. Det är verkligen bra att analysera data och en kodrad kan automatisera saker och ting för dig.

Syntax för matchningsfunktion i Excel VBA

VBA Match har följande syntax:

Var,

  • Arg1 - Lookup_value - Värdet du behöver för att söka i en given grupp.
  • Arg2 - Lookup_array - en matris med rader och kolumner som innehåller möjliga Lookup_value.
  • Arg3 - Match_type - Matchtypen som tar värdet -1, 0 eller 1.

Om match_type = -1 betyder att MATCH-funktionen kommer att hitta det minsta värdet som är större än eller lika med lookup_value. För att detta ska hända måste lookup_array sorteras i fallande ordning.

Om match_type = 0 betyder att MATCH-funktionen kommer att ta reda på värdet som är exakt samma som för lookup_value.

Om match_type = +1 betyder det att MATCH-funktionen kommer att hitta det största värdet som är mindre än eller lika med lookup_value. För att detta ska hända måste lookup_array sorteras i stigande ordning. Standardvärdet för matchningstypen är +1.

Hur använder jag Excel VBA Match-funktion?

Vi kommer att lära dig att använda en VBA Match Excel-funktion med några exempel.

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

VBA Match-funktion - Exempel # 1

Anta att vi har data som visas nedan:

Vi måste hitta vem från denna lista som har lön € 30 000 tillsammans med position i Excel.

Även om vi i den här datauppsättningen manuellt kan konfigurera detta, tänk på en bredare bild, tänk om du har miljoner rader och kolumner?

Följ stegen nedan för att använda MATCH-funktionen i VBA.

Steg 1: Definiera en delprocedur genom att ge ett namn till makro.

Koda:

 Sub exmatch1 () Slut Sub 

Steg 2: Nu vill vi att vår utgång ska lagras i cell E2. Börja därför skriva koden som Range ("E2")

Detta definierar produktionsområdet för vårt resultat.

Koda:

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

Steg 3: Använd WorksheetFunction för att kunna använda VBA-funktioner.

Koda:

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

Steg 4: WorksheetFunction har olika funktioner som kan nås och användas under VBA. Efter “WorksheetFunction”, sätta en punkt (.) Så kan du få åtkomst till funktionerna. Välj MATCH-funktionen i listrutan.

Koda:

 Sub exmatch1 () Range ("E2"). Value = WorksheetFunction.Match End Sub 

Steg 5: Ge argumenten till MATCH-funktionen. Som Lookup_value. Vår uppslagningsvärde lagras i cell D2 som visas i skärmbilden nedan. Du kan komma åt den under MATCH-funktionen med Range-funktionen.

Koda:

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

Steg 6: Det andra argumentet är Lookup_array. Detta är tabellområdet inom vilket du vill ta reda på positionen för Lookup_value. I vårt fall är det (B1: B11). Ange denna matris med hjälp av Range-funktionen.

Koda:

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

Steg 7: Det sista argumentet för att den här koden ska fungera är Match_type. Vi ville ha en exakt matchning för Lookup_value i givet intervall> Ge därför Zero (0) som ett matchande argument.

Koda:

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

Steg 8: Kör den här koden genom att trycka på F5 eller Run-knappen och se utgången.

Du kan se i cell E2, det finns ett numeriskt värde (6) som visar positionen för värdet från cell D2 genom intervallet B1: B11.

Exempel 2 - VBA-matchfunktion med slingor

Det är enkelt när du bara har ett värde att leta efter i hela sortimentet. Men vad händer om du behöver kontrollera positionen för ett antal celler? Det skulle vara svårt för en person som lägger till och ber honom att skriva de separata koderna för varje cell.

I sådana fall kan MATCH-funktionen användas med loop (särskilt för loop i vårt fall). Se följande steg för att få en uppfattning om hur vi använder MATCH-funktion med loop.

Steg 1: Definiera en delprocedur genom att ge ett namn till makro.

Koda:

 Subexempel2 () Slut Sub 

Steg 2: Definiera ett heltal som kan hålla värdet för flera celler i slingan.

Koda:

 Subexempel2 () Dim i som heltal End Sub 

Steg 3: Använd För loop på heltalet för att använda de olika uppslagvärdena vars position kan lagras i kolumn E.

Koda:

 Subexempel2 () Dim i som heltal för i = 2 till 6 slut Sub 

Steg 4: Använd nu samma metod som vi använde i exempel 1, istället för Range, kommer vi att använda Cells-funktionen och kommer att använda en tvådimensionell matris (rader och kolumner) i motsats till det första exemplet.

Koda:

 Underexempel2 () Dim i som heltal för i = 2 till 6 celler (i, 5). Värde = kalkylarkFunktion.Match (celler (i, 4). Värde, intervall ("B2: B11"), 0) Nästa i slutet Sub 

Här celler (i, 5). Värde = lagrar värdet på resulterande positioner i varje rad från 2 till 6 (rad i) i kolumn E (kolumn nummer 5). Under Match-funktion kontrollerar celler (i, 4). Värden för varje Lookup_value som finns i rad 2 till 6 i den 4: e kolumnen. Detta sökvärde sökte sedan i Array B2: B11 i excel-ark där data finns och relativa positioner kan lagras i varje rad i kolumn 5 (kolumn E).

Steg 5: Kör den här koden genom att trycka på F5 eller Run-knappen samtidigt och se resultatet. Det kommer nästan att dra ut magin i ett kodstycke med en enda rad.

I den här artikeln lärde vi oss hur vi kan använda MATCH-funktionen under VBA som ett speciellt fall för WorksheetFunction.

Saker att komma ihåg

  • Look__value kan vara nummer / text / logiskt värde eller kan vara en cellreferens till ett nummer, text eller logiskt värde.
  • Som standard kan Match_type betraktas som 1 om den utelämnas / inte nämns.
  • Som liknar Excel MATCH-funktionen ger VBA MATCH också den relativa positionen för en uppslagningsvärde under Lookup_array och inte själva värdet.
  • Om en matchning inte hittas kommer en relativ excelcell att fyllas med # N / A.
  • Om MATCH-funktionen används på textvärden kan den inte skilja mellan små och stora versaler. Till exempel är Lalit och lalit samma. Så gör LALIT och lalit.
  • Jokertecken kan användas om du hittar den exakta matchningen (dvs. matchningstypen är noll). Wildcard-karaktärstjärna (*) kan användas för att ta reda på en serie tecken. Medan ett frågetecken (?) Kan användas för att ta reda på en enda karaktär.

Rekommenderade artiklar

Detta är en guide till VBA Match-funktion. Här diskuterar vi VBA Match och hur du använder Excel VBA Match-funktion tillsammans med praktiska exempel och nedladdningsbar Excel-mall. Du kan också gå igenom våra andra föreslagna artiklar -

  1. Komplett guide till VBA vid fel
  2. Hur använder man VBA-nummerformat?
  3. VBA VLOOKUP-funktion med exempel
  4. Skapa VBA-funktion i Excel
  5. Excel Match-funktion (exempel)

Kategori: