VBA INDEX MATCH Basert på flere kriterier i Excel (3 metoder)

  • Dele Denne
Hugh West

Når vi har en stor mengde data, er det noen ganger vanskelig å trekke ut noen spesifikke data fra datasettet. Sammen med Excels INDEX - og MATCH -funksjoner kan du hente alle slags data selv i et stort datasett. Implementering av VBA er den mest effektive, raskeste og sikreste metoden for å kjøre enhver operasjon i Excel. I denne artikkelen vil vi vise deg 3 forskjellige metoder for hvordan du utfører INDEX MATCH basert på flere kriterier i Excel med VBA-makroen .

Last ned Arbeidsbok

Du kan laste ned den gratis Excel-arbeidsboken herfra.

VBA INDEX MATCH Basert på Multiple Criteria.xlsm

3 metoder med VBA INDEX MATCH basert på flere kriterier i Excel

I de følgende delene vil vi vise deg hvordan du utfører INDEX MATCH basert på flere kriterier for et område , for et spesifikt utvalg og for en tabell i Excel med VBA .

Over vi har datasettet som denne artikkelen vil følge. Vi har Studentnavn , Student-ID, og Eksamenskarakterer til hver student i datasettet. Vi vil trekke ut et bestemt resultat som ligger i én kolonne basert på betingelser fra de to andre kolonnene.

Kriterier – 1: Bygg inn VBA med INDEX MATCH for multiple (to) dimensjonale oppslag i Excel

Tenk på følgende bilde. Vi har lagret en bestemt elevs navn « Edge» i CellG42; og kolonnen som vi skal søke etter Resultat i, Eksamenskarakterer , er lagret i celle G5 . Vi søker i kolonnen Eksamenskarakterer og lagrer merkene som « Edge» fikk i Cell G6 .

Trinnene til oppslag resulterer i en todimensjonal matrise med INDEKS og MATCH i Excel med VBA er gitt nedenfor.

Trinn:

  • Trykk i begynnelsen Alt + F11 på tastaturet eller gå til kategorien Utvikler -> Visual Basic for å åpne Visual Basic Editor .

  • Deretter, i popup-kodevinduet, fra menylinjen, klikk Sett inn -> Modul .

  • Deretter kopier følgende kode og lim inn den i koden vindu.
2077

Koden din er nå klar til å kjøre.

  • Trykk nå F5 på tastatur eller fra menylinjen velg Kjør -> Kjør Sub/UserForm . Du kan også bare klikke på det lille Kjør-ikonet i undermenylinjen for å kjøre makroen.

Etter kjøringen av koden, se på gif-en nedenfor for å se resultatet.

Som et resultat fikk merkene som « Edge» fikk i eksamen, 67 , er hentet i Cell G7 .

VBA-kodeforklaring

9274

Definere variabelen for regneark.

8208

Lagre regnearketnavnet. Navnet på arket vårt er "Two Dimension", bør du oppginavnet i henhold til regnearket ditt.

8402

Denne kodebiten velger området C5:D14 som oppslagsområdet. Søk deretter etter samsvaret som er lagret i celle G4 i området B5:B14 og søk etter samsvaret som er lagret i celle G5 i området C4:D4 og send resultatet til celle G6 .

Les mer: Hvordan bruke INDEX MATCH med flere kriterier for datoperiode

Kriterier – 2: Bruk makro for å finne MATCH-verdi etter INDEX med brukerdefinert funksjon (UDF)

Du kan trekke ut samsvarende verdier fra et datasett med en brukerdefinert funksjon (UDF) . Fra det følgende bildet vil vi bestå student-ID og eksamenskarakterer til en bestemt student, og funksjonen vil gi oss navnet av den spesifikke studenten.

La oss se hvordan du oppnår det for Studentnavn «Finn» med VBA .

Trinn:

  • Som vist før, åpne Visual Basic Editor fra fanen Utvikler og Sett inn en modul i kodevinduet.
  • Deretter, i kodevinduet, kopier følgende kode og lim inn den.
2152

  • Ikke kjør denne koden, lagre den.
  • gå tilbake til arbeidsarket av interesse. Velg hvilken som helst celle som du vil lagre resultatet. I vårt tilfelle er det Celle F5 .
  • I den cellen skriver du UDF duhar nettopp opprettet koden ( MatchByIndex ) og bestått student-ID og eksamenskarakterer til den spesifikke studenten innenfor parentesen til funksjonen.

Som vi prøver å trekke ut navnet « Finn» fra hans ID (105) og Marks (84) , så for vårt tilfelle blir formelen,

=MatchByIndex(105,84)

  • Trykk deretter Enter .

Se på følgende bilde.

I Celle F5 har vi hentet navnet « Finn» ved ganske enkelt å sende hans ID og Marks inne i funksjonen som vi opprettet i VBA -koden.

VBA-kodeforklaring

1861

Opprette en ny funksjon og sende variablene i den. Du kan definere hvilket som helst navn på funksjonen.

1951

Vår rad starter fra rad nummer 4. Du må oppgi radnummeret som datasettet starter fra.

7145

Definere variablene.

2017

Definer først regnearket som skal jobbes med. Navnet på arket vårt er "UDF", du bør oppgi navnet i henhold til regnearket ditt. Begynn deretter å søke i området C:D fra den første raden som vi definerte til den siste raden.

6690

Begynn å iterere fra den første raden til den siste raden. Hvis den første verdien som vi vil sende inne i funksjonen faller innenfor C -kolonnen og hvis den andre verdien som vi vil sende inne i funksjonen faller innenfor D -kolonnen, vil den returnere desamsvar fra B -kolonnen. Ellers går du ut av funksjonen, avslutter alle setningene og går til neste linje.

5426

Hvis den forrige betingelsen ikke blir oppfylt under kjøring, vil meldingen "Data ikke funnet" bli returnert og kode vil forlate funksjonen.

Les mer: INDEX-MATCH med flere kriterier for delvis tekst i Excel (2 måter)

Kriterier – 3: Implementer VBA for å returnere MATCH-verdi fra en tabell med flere data i Excel

I denne delen vil vi lære hvordan du returnerer en matchet verdi av indeksene fra en tabell i MsgBox i VBA Excel.

La oss se hvordan du trekker ut merkene fra tabellen vist i vår datasett ( T able Name: TableMatch ) til en bestemt student ved å oppgi Name og ID i koden. For vårt tilfelle vil Navn og ID være henholdsvis Finn og 105 .

Trinn :

  • Åpne først Visual Basic Editor fra kategorien Utvikler og Sett inn en modul i kodevinduet.
  • Deretter kopier følgende kode og lim inn den i kodevinduet.
9326

Din kode er nå klar til å kjøre.

  • Senere Kjør denne koden og se på følgende bilde for å se hva som skjedde som et resultat.

Som du kan se fra bildet ovenfor, er det en Microsoft Excel pop-opp meldingsboks som viser deg merker: 84 av ID: 105 og navn: Finn som vi oppga i koden.

VBA-kodeforklaring

2338

Definere variablene.

8394

Angi arknavnet og tabellnavnet i variabler.

9428

Lagre oppslagsverdiene og oppslagskolonnene for å søke.

1433

Denne kodebiten skanner gjennom fra begynnelsen til slutten av abonnenten, og hvis den finner samsvaret med den definerte IDen og navnet i søkekolonnene, lagre resultatet og lukk alle setningene. Avslutt også iterasjonen og gå til neste del av koden.

2466

Kaster resultatet i MsgBox.

Les mer: Lookup and Return Flere verdier koblet sammen til én celle i Excel

Konklusjon

For å konkludere, viste denne artikkelen deg 3 forskjellige metoder for hvordan du utfører INDEX MATCH-basert på flere kriterier i Excel med VBA-makroen . Jeg håper denne artikkelen har vært veldig nyttig for deg. Still gjerne spørsmål angående emnet.

Hugh West er en svært erfaren Excel-trener og analytiker med over 10 års erfaring i bransjen. Han har en bachelorgrad i regnskap og finans og en mastergrad i bedriftsøkonomi. Hugh har en lidenskap for undervisning og har utviklet en unik undervisningstilnærming som er enkel å følge og forstå. Hans ekspertkunnskap om Excel har hjulpet tusenvis av studenter og fagfolk over hele verden med å forbedre sine ferdigheter og utmerke seg i karrieren. Gjennom bloggen sin deler Hugh sin kunnskap med verden, og tilbyr gratis Excel-opplæringer og nettbasert opplæring for å hjelpe enkeltpersoner og bedrifter å nå sitt fulle potensial.