Excel VBA-kampfunksjon
VBA Match-funksjon ser etter posisjonen eller radnummeret til oppslagverdien i tabellarrayen, dvs. i hoved Excel-tabellen. For eksempel VLOOKUP, HLOOKUP, MATCH, INDEX, etc. Dette er oppslagfunksjonene som er viktigere enn andre. Beklageligvis har vi ikke de samme funksjonene som er tilgjengelige i VBA for å gjøre ting enklere. Imidlertid kan vi bruke disse funksjonene som regnearkfunksjoner under VBA-skriptet for å gjøre livene våre enklere.
I dag skal vi lære MATCH-funksjonen som kan brukes som regnearkfunksjon under VBA.
VBA Match har samme bruk som Match-formelen i Excel. Denne funksjonen i MS Excel VBA finner et samsvar i en matrise med referanse til oppslagverdien og skriver ut plasseringen. Denne funksjonen blir nyttig når du trenger å evaluere dataene basert på visse verdier. For eksempel er VBA MATCH nyttig hvis du har lønnsdataene til ansatte og du må finne ut den numeriske stillingen til en ansatt i dataene dine som har lønn mindre enn / større enn / tilsvarer en viss verdi. Det er veldig nyttig å analysere dataene, og en kodelinje kan også automatisere tingene for deg.
Syntaks for matchfunksjon i Excel VBA
VBA Match har følgende syntaks:
Hvor,
- Arg1 - Lookup_value - Verdien du trenger for å slå opp i en gitt gruppe.
- Arg2 - Lookup_array - en rekke rader og kolonner som inneholder mulig Lookup_value.
- Arg3 - Match_type - Kamptypen som tar verdien -1, 0 eller 1.
Hvis match_type = -1 betyr at MATCH-funksjonen vil finne ut den minste verdien som er større enn eller tilsvarer lookup_value. For at dette skal skje, må oppslag_arrayen sorteres i synkende rekkefølge.
Hvis match_type = 0 betyr at MATCH-funksjonen vil finne ut verdien som er nøyaktig den samme som for lookup_value.
Hvis match_type = +1 betyr det at MATCH-funksjonen vil finne ut den største verdien som er mindre enn eller tilsvarer lookup_value. For at dette skal skje, må lookup_array sorteres i stigende rekkefølge. Standardverdien for matchen er +1.
Hvordan bruke Excel VBA Match-funksjon?
Vi lærer hvordan du bruker en VBA Match Excel-funksjon med få eksempler.
Du kan laste ned denne VBA Match Excel-malen her - VBA Match Excel-malVBA Match-funksjon - eksempel # 1
Anta at vi har data som vist nedenfor:
Vi må finne hvem fra denne listen som har lønn € 30.000 sammen med stilling i Excel.
Selv om vi i dette datasettet manuelt kan konfigurere dette, kan du tenke på et bredere bilde, hva om du har millioner av rader og kolonner?
Følg trinnene nedenfor for å bruke MATCH-funksjonen i VBA.
Trinn 1: Definer en delprosedyre ved å gi et navn til makroen.
Kode:
Sub exmatch1 () Slutt Sub
Trinn 2: Nå vil vi at utdataene våre skal lagres i celle E2. Begynn derfor å skrive koden som Range (“E2”)
Dette definerer outputområdet for resultatet.
Kode:
Sub exmatch1 () Range ("E2"). Verdi = End Sub
Trinn 3: Bruk WorksheetFunction for å kunne bruke VBA-funksjoner.
Kode:
Sub exmatch1 () Range ("E2"). Verdi = WorksheetFunction End Sub
Trinn 4: WorksheetFunction har en rekke funksjoner som er tilgjengelige og brukes under VBA. Etter “WorksheetFunction”, sett en prikk (.), Så vil du kunne få tilgang til funksjonene. Velg MATCH-funksjonen fra rullegardinlisten.
Kode:
Sub exmatch1 () Range ("E2"). Verdi = WorksheetFunction.Match End Sub
Trinn 5: Gi argumentene til MATCH-funksjonen. Som Lookup_value. Lookup_value vår lagres i celle D2 som vist på skjermbildet nedenfor. Du får tilgang til den under MATCH-funksjonen ved å bruke Range-funksjonen.
Kode:
Sub exmatch1 () Range ("E2"). Verdi = WorksheetFunction.Match (Range ("D2"). Verdi, End Sub
Trinn 6: Det andre argumentet er Lookup_array. Dette er tabellområdet du vil finne ut hvor Lookup_value ligger. I vårt tilfelle er det (B1: B11). Gi denne matrisen ved hjelp av Range-funksjonen.
Kode:
Sub exmatch1 () Range ("E2"). Verdi = WorksheetFunction.Match (Range ("D2"). Verdi, Range ("B1: B11"), End Sub
Trinn 7: Det siste argumentet for at denne koden skal fungere er Match_type. Vi ønsket å ha en eksakt samsvar for Lookup_value i gitt område> Gi derfor null (0) som et samsvarende argument.
Kode:
Sub exmatch1 () Range ("E2"). Verdi = WorksheetFunction.Match (Range ("D2"). Verdi, Range ("B1: B11"), 0) End Sub
Trinn 8: Kjør denne koden ved å trykke på F5 eller Run-knappen og se utdataene.
Du kan se i celle E2, det er en numerisk verdi (6) som viser plasseringen av verdien fra celle D2 gjennom rekkevidde B1: B11.
Eksempel 2 - VBA-kampfunksjon med løkker
Det er enkelt når du bare har en verdi å lete etter i hele serien. Men hva hvis du trenger å sjekke plasseringen for et antall celler? Det vil være hardt for en person som legger til for å be ham om å skrive de separate kodene for hver celle.
I slike tilfeller kan MATCH-funksjonen brukes med loop (spesielt For loop i vårt tilfelle). Se følgende trinn for å få et inntrykk av hvordan vi bruker MATCH-funksjon med loop.
Trinn 1: Definer en underprosess ved å gi et navn til makroen.
Kode:
Subeksempel2 () Slutt Sub
Trinn 2: Definer et heltall som kan inneholde verdien for flere celler i løkken.
Kode:
Undereksempel2 () Dim i som heltal Slutt sub
Trinn 3: Bruk For loop på heltallet for å bruke de forskjellige oppslagsverdiene hvis plassering kan lagres i kolonne E.
Kode:
Undereksempel2 () Dim i som heltall for i = 2 til 6 slutt Sub
Trinn 4: Nå, bruk den samme metoden som vi brukte i eksempel 1, i stedet for Range, vil vi bruke Cells-funksjonen og bruke en todimensjonal matrise (Rader og kolonner) i motsetning til det første eksemplet.
Kode:
Undereksempel2 () Dim i som heltall for i = 2 til 6 celler (i, 5). Verdi = regnearkFunksjon.Match (celler (i, 4). Verdi, rekkevidde ("B2: B11"), 0) Neste i Slutt Under
Her lagrer celler (i, 5). Verdi = lagrer verdien av resulterende posisjoner i hver rad fra 2 til 6 (rad i) i kolonne E (kolonne nummer 5). Under Match-funksjon sjekker celler (i, 4). Verdier for hver Lookup_value til stede i rad 2 til 6 i den fjerde kolonnen. Denne oppslagsverdien søkte deretter i Array B2: B11 i excel-ark der data er til stede og relative posisjoner kan lagres i hver rad i kolonne 5 (kolonne E).
Trinn 5: Kjør denne koden ved å trykke på F5 eller Run-knappen samtidig og se resultatet. Den vil nesten trekke ut magien i et stykke kode med en enkelt linje.
I denne artikkelen lærte vi hvordan vi kan bruke MATCH-funksjonen under VBA som et spesielt tilfelle av WorksheetFunction.
Ting å huske
- Look__value kan være nummer / tekst / logisk verdi eller kan være en cellehenvisning til et tall, tekst eller logisk verdi.
- Som standard kan Match_type betraktes som 1, hvis utelatt / ikke nevnt.
- I likhet med Excel MATCH-funksjonen gir VBA MATCH også den relative posisjonen til en oppslag_verdi under Lookup_array og ikke selve verdien.
- Hvis en kamp ikke blir funnet, vil en relativ excelcelle fylles med # N / A.
- Hvis MATCH-funksjonen brukes på tekstverdier, kan den ikke skille mellom små og store bokstaver. For eksempel er Lalit og lalit de samme. Så gjør LALIT og lalit.
- Jokertegn kan brukes hvis du finner ut nøyaktig kamp (dvs. samsvarstypen er null). Jokertegnets asterisk (*) kan brukes til å finne ut en serie tegn. Mens et spørsmålstegn (?) Kan brukes til å finne ut et enkelt tegn.
Anbefalte artikler
Dette er en guide til VBA Match-funksjon. Her diskuterer vi VBA Match og hvordan du bruker Excel VBA Match-funksjon sammen med praktiske eksempler og nedlastbar Excel-mal. Du kan også gå gjennom andre foreslåtte artikler -
- Komplett guide til VBA ved feil
- Hvordan bruke VBA-nummerformat?
- VBA VLOOKUP-funksjon med eksempler
- Opprette VBA-funksjon i Excel
- Excel Match-funksjon (eksempler)