Excel INDEX MATCH vs. VLOOKUP - eksempler på formler

  • Del Dette
Michael Brown

Denne vejledning viser, hvordan du bruger INDEX og MATCH i Excel, og hvordan det er bedre end VLOOKUP.

I et par af de seneste artikler har vi gjort en god indsats for at forklare det grundlæggende i VLOOKUP-funktionen for begyndere og give mere komplekse eksempler på VLOOKUP-formler til avancerede brugere. Og nu vil jeg forsøge at tale dig fra at bruge VLOOKUP, men i det mindste vise dig en alternativ måde at lave et vertikalt opslag i Excel på.

"Hvad skal jeg bruge det til?" spørger du dig måske. Fordi VLOOKUP har mange begrænsninger, der kan forhindre dig i at få det ønskede resultat i mange situationer. På den anden side er INDEX MATCH-kombinationen mere fleksibel og har mange fantastiske funktioner, der gør den overlegen i forhold til VLOOKUP i mange henseender.

    Excel INDEX- og MATCH-funktioner - det grundlæggende

    Da formålet med denne vejledning er at demonstrere en alternativ måde at lave en vlookup i Excel på ved hjælp af en kombination af INDEX- og MATCH-funktionerne, vil vi ikke komme så meget ind på deres syntaks og anvendelse. Vi vil kun dække det minimum, der er nødvendigt for at forstå den generelle idé, og derefter tage et dybdegående kig på formeleksempler, der afslører alle fordelene ved at bruge INDEX MATCH i stedet for VLOOKUP.

    INDEX-funktion - syntaks og brug

    Excel-funktionen INDEX returnerer en værdi i et array baseret på de række- og kolonnumre, du angiver. Syntaksen for INDEX-funktionen er enkel:

    INDEX(array, row_num, [column_num])

    Her er en meget enkel forklaring på de enkelte parametre:

    • array - et område af celler, som du vil returnere en værdi fra.
    • row_num - række-nummeret i arrayet, hvorfra du ønsker at returnere en værdi. Hvis det udelades, er kolonne_nummeret påkrævet.
    • kolonne_nummer - kolonnenummeret i arrayet, hvorfra du ønsker at returnere en værdi. Hvis det udelades, kræves row_num.

    Du kan finde flere oplysninger under Excel INDEX-funktionen.

    Og her er et eksempel på INDEX-formlen i sin enkleste form:

    =INDEX(A1:C10,2,3)

    Formlen søger i cellerne A1 til C10 og returnerer værdien af cellen i den anden række og den tredje kolonne, dvs. celle C2.

    Det er meget nemt, ikke? Men når du arbejder med rigtige data, ved du næsten aldrig, hvilken række og kolonne du vil have, og det er her, MATCH-funktionen er praktisk.

    MATCH-funktion - syntaks og brug

    Excel MATCH-funktionen søger efter en opslagsværdi i et område af celler og returnerer den relativ position af denne værdi i intervallet.

    Syntaksen for MATCH-funktionen er som følger:

    MATCH(opslag_værdi, opslagsarray, [match_type])
    • opslagsværdi - det tal eller den tekstværdi, du leder efter.
    • opslagsbatteri - et område af celler, der søges i.
    • match_type - angiver, om der skal returneres et nøjagtigt match eller det nærmeste match:
      • 1 eller udeladt - finder den største værdi, der er mindre end eller lig med opslagsværdien. Kræver sortering af opslagsarrayet i stigende rækkefølge.
      • 0 - finder den første værdi, der er nøjagtigt lig med opslagsværdien. I kombinationen INDEX/MATCH skal du næsten altid have et nøjagtigt match, så du sætter det tredje argument i din MATCH-funktion til 0.
      • -1 - finder den mindste værdi, der er større end eller lig med lookup_value. Kræver sortering af lookup-arrayet i faldende rækkefølge.

    Hvis f.eks. intervallet B1:B3 indeholder værdierne "New-York", "Paris" og "London", returnerer nedenstående formel tallet 3, fordi "London" er den tredje post i intervallet:

    =MATCH("London",B1:B3,0)

    Du kan finde flere oplysninger under Excel MATCH-funktionen.

    Ved første øjekast kan det være tvivlsomt, om MATCH-funktionen er brugbar. Hvem interesserer sig for placeringen af en værdi i et interval? Det, vi ønsker at vide, er selve værdien.

    Lad mig minde dig om, at den relative position for opslagsværdien (dvs. række- og kolonnumre) er præcis det, du skal give til row_num og kolonne_nummer Som du husker, kan Excel INDEX finde værdien på krydset mellem en given række og kolonne, men den kan ikke bestemme, hvilken række og kolonne du ønsker.

    Sådan bruger du funktionen INDEX MATCH i Excel

    Nu hvor du kender det grundlæggende, tror jeg, at det allerede er begyndt at give mening, hvordan MATCH og INDEX arbejder sammen. Kort fortalt finder INDEX opslagsværdien ved hjælp af kolonne- og rækketal, og MATCH leverer disse tal. Det er det hele!

    Ved lodret opslag bruger du kun MATCH-funktionen til at bestemme rækkens nummer og angiver kolonneområdet direkte til INDEX:

    INDEX ( kolonne til at returnere en værdi fra , MATCH ( opslagsværdi , kolonne til at se op imod , 0))

    Har du stadig problemer med at regne det ud? Det er måske lettere at forstå med et eksempel: Antag, at du har en liste over nationale hovedstæder og deres befolkningstal:

    Hvis du vil finde befolkningstallet i en bestemt hovedstad, f.eks. Japans hovedstad, skal du bruge følgende INDEX MATCH-formel:

    =INDEX(C2:C10, MATCH("Japan", A2:A10, 0))

    Lad os nu analysere, hvad hver enkelt komponent i denne formel rent faktisk gør:

    • Funktionen MATCH søger efter opslagsværdien "Japan" i intervallet A2:A10 og returnerer tallet 3, fordi "Japan" er den tredje i opslagsrækken.
    • Rækkens nummer går direkte til row_num argumentet i INDEX, der anviser den til at returnere en værdi fra den pågældende række.

    Så ovenstående formel bliver til en simpel INDEX(C2:C,3), der siger, at der skal søges i cellerne C2 til C10 og hentes værdien fra den tredje celle i dette område, dvs. C4, fordi vi begynder at tælle fra anden række.

    Hvis du ikke ønsker at indkode byen i formlen, kan du indtaste den i en celle, f.eks. F1, angive cellereferencen til MATCH, og du får en dynamisk opslagsformel:

    =INDEX(C2:C10, MATCH(F1,A2:A10,0))

    Vigtig bemærkning! Antallet af rækker i array argumentet i INDEX skal svare til antallet af rækker i opslagsbatteri argumentet i MATCH, ellers vil formlen give et forkert resultat.

    Vent, vent... hvorfor bruger vi ikke bare følgende Vlookup-formel? Hvorfor spilder vi tid på at forsøge at finde ud af de mystiske snørklede Excel MATCH INDEX-metoder?

    =VLOOKUP(F1, A2:C10, 3, FALSE)

    I dette tilfælde er det slet ikke nødvendigt :) Dette enkle eksempel er kun til demonstrationsformål, så du får en fornemmelse af, hvordan INDEX- og MATCH-funktionerne arbejder sammen. Andre eksempler, der følger nedenfor, vil vise dig den virkelige styrke af denne kombination, der nemt klarer mange komplekse scenarier, når VLOOKUP er i vanskeligheder.

    Tips:

    • I Excel 365 og Excel 2021 kan du bruge en mere moderne INDEX XMATCH-formel.
    • I Google Sheets kan du se eksempler på formler med INDEX MATCH i denne artikel.

    INDEX MATCH vs. VLOOKUP

    Når man skal beslutte, hvilken funktion man skal bruge til vertikale opslag, er de fleste Excel-guruer enige om, at INDEX MATCH er langt bedre end VLOOKUP. Mange mennesker holder sig dog stadig til VLOOKUP, for det første fordi det er enklere, og for det andet fordi de ikke fuldt ud forstår alle fordelene ved at bruge INDEX MATCH-formlen i Excel. Uden en sådan forståelse er ingen villige til at investere tid i at lære en mere komplekssyntaks.

    Nedenfor vil jeg påpege de vigtigste fordele ved MATCH INDEX i forhold til VLOOKUP, og du kan selv afgøre, om det er en værdifuld tilføjelse til dit Excel-arsenal.

    4 hovedårsager til at bruge INDEX MATCH i stedet for VLOOKUP

    1. Opslag fra højre til venstre. Som enhver uddannet bruger ved, kan VLOOKUP ikke kigge til venstre, hvilket betyder, at din opslagsværdi altid skal ligge i kolonnen længst til venstre i tabellen. INDEX MATCH kan nemt lave opslag til venstre! Følgende eksempel viser det i praksis: Sådan laver du Vlookup af en værdi til venstre i Excel.
    2. Indsæt eller slet kolonner på sikker vis. VLOOKUP-formler bliver ødelagt eller giver forkerte resultater, når en ny kolonne slettes fra eller tilføjes til en opslagstabel, fordi VLOOKUP-syntaksen kræver, at du angiver indeksnummeret for den kolonne, du vil hente data fra. Når du tilføjer eller sletter kolonner, ændres indeksnummeret naturligvis.

      Med INDEX MATCH angiver du returkolonneområdet og ikke et indeksnummer, og du kan derfor frit indsætte og fjerne så mange kolonner, som du vil, uden at skulle bekymre dig om at opdatere hver enkelt tilknyttet formel.

    3. Der er ingen grænse for størrelsen af en opslagsværdi. Når du bruger VLOOKUP-funktionen, må den samlede længde af dine opslagskriterier ikke overstige 255 tegn, da du ellers vil få en #VALUE! fejl. Så hvis dit datasæt indeholder lange strenge, er INDEX MATCH den eneste løsning, der virker.
    4. Højere behandlingshastighed. Hvis dine tabeller er relativt små, vil der næppe være nogen væsentlig forskel i Excels ydeevne. Men hvis dine regneark indeholder hundredvis eller tusindvis af rækker og dermed hundredvis eller tusindvis af formler, vil MATCH INDEX fungere meget hurtigere end VLOOKUP, fordi Excel kun skal behandle opslags- og returkolonnerne i stedet for hele tabelmatrixen.

      VLOOKUP's indvirkning på Excels ydeevne kan være særlig mærkbar, hvis din projektmappe indeholder komplekse arrayformler som VLOOKUP og SUM. Pointen er, at kontrollen af hver værdi i arrayet kræver et separat kald af VLOOKUP-funktionen. Så jo flere værdier dit array indeholder, og jo flere arrayformler du har i en projektmappe, jo langsommere er Excel.

    Excel INDEX MATCH - eksempler på formler

    Når vi nu kender grundene til at lære MATCH INDEX-funktionen, så lad os komme til den mest interessante del og se, hvordan du kan anvende den teoretiske viden i praksis.

    INDEX MATCH-formel til at se op fra højre til venstre

    Som allerede nævnt kan VLOOKUP ikke kigge til venstre. Så medmindre dine opslagsværdier befinder sig i kolonnen længst til venstre, er der ingen chance for, at en Vlookup-formel vil give dig det ønskede resultat. INDEX MATCH-funktionen i Excel er mere alsidig og er ligeglad med, hvor opslags- og returkolonnerne er placeret.

    I dette eksempel vil vi tilføje kolonnen Rank til venstre i vores eksempeltabel og forsøge at finde ud af, hvordan den russiske hovedstad Moskva ligger i forhold til befolkningstal.

    Med opslagsværdien i G1 skal du bruge følgende formel til at søge i C2:C10 og returnere en tilsvarende værdi fra A2:A10:

    =INDEX(A2:A10,MATCH(G1,C2:C10,0))

    Tip. Hvis du planlægger at bruge din INDEX MATCH-formel til mere end én celle, skal du sørge for at låse begge intervaller med absolutte cellereferencer (f.eks. $A$2:$A$10 og $C$2:4C$10), så de ikke bliver forvrænget, når du kopierer formlen.

    INDEX MATCH MATCH for at søge i rækker og kolonner

    I ovenstående eksempler brugte vi INDEX MATCH som erstatning for klassisk VLOOKUP til at returnere en værdi fra et foruddefineret område med én kolonne. Men hvad nu hvis du har brug for at slå op i flere rækker og kolonner? Med andre ord, hvad nu hvis du ønsker at udføre den såkaldte matrix eller tovejs opslag?

    Det lyder måske lidt indviklet, men formlen ligner meget den grundlæggende Excel-funktion INDEX MATCH med blot én forskel. Gæt hvad?

    Du skal blot bruge to MATCH-funktioner - den ene for at få et rækketal og den anden for at få et kolonnetal. Og jeg lykønsker dem af jer, der har gættet rigtigt :)

    INDEX (array, MATCH ( vlookup-værdi , kolonne til at se op imod , 0), MATCH ( hlookup-værdi , række til at se op mod , 0))

    Og nu skal du se på nedenstående tabel, og lad os opbygge en INDEX MATCH MATCH-formel for at finde befolkningen (i millioner) i et givet land for et givet år.

    Med mållandet i G1 (vlookup-værdi) og målåret i G2 (hlookup-værdi) får formlen følgende formular:

    =INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))

    Sådan fungerer denne formel

    Når du har brug for at forstå en kompleks Excel-formel, kan du opdele den i mindre dele og se, hvad hver enkelt funktion gør:

    MATCH(G1,A2:A11,0) - søger i A2:A11 efter værdien i celle G1 ("Kina") og returnerer dens position, som er 2.

    MATCH(G2,B1:D1,0))) - søger gennem B1:D1 for at finde positionen for værdien i celle G2 ("2015"), som er 3.

    Ovenstående række- og kolonnumre svarer til de tilsvarende argumenter i INDEX-funktionen:

    INDEX(B2:D11, 2, 3)

    Som resultat får du en værdi i skæringspunktet mellem den 2. række og 3. kolonne i intervallet B2:D11, som er værdien i celle D3. Nemt? Ja!

    Excel INDEX MATCH til at søge efter flere kriterier

    Hvis du har haft mulighed for at læse vores Excel VLOOKUP tutorial, har du sikkert allerede testet en formel til Vlookup med flere kriterier. En væsentlig begrænsning ved denne fremgangsmåde er dog nødvendigheden af at tilføje en hjælpekolonne. Den gode nyhed er, at Excels INDEX MATCH-funktion også kan slå op med to eller flere kriterier uden at ændre eller omstrukturere dine kildedata!

    Her er den generiske INDEX MATCH-formel med flere kriterier:

    {=INDEX( return_range , MATCH(1, ( kriterier1 = række1 ) * ( kriterier2 = række2 ), 0))}

    Bemærk: Dette er en arrayformel, som skal udfyldes med genvejen Ctrl + Shift + Enter.

    Hvis du i nedenstående eksempeltabel antager, at du vil finde beløbet ud fra 2 kriterier, Kunde og Produkt .

    Følgende INDEX MATCH-formel fungerer fint:

    =INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))

    Hvor C2:C10 er det område, der skal returneres en værdi fra, F1 er kriterium 1, A2:A10 er det område, der skal sammenlignes med kriterium 1, F2 er kriterium 2, og B2:B10 er det område, der skal sammenlignes med kriterium 2.

    Husk at indtaste formlen korrekt ved at trykke på Ctrl + Shift + Enter, og Excel vil automatisk sætte den i parenteser, som vist på skærmbilledet:

    Hvis du hellere vil undgå at bruge array-formler i dine regneark, kan du tilføje endnu en INDEX-funktion til formlen og afslutte den med et almindeligt Enter-tryk:

    Sådan fungerer disse formler

    Formlerne anvender den samme fremgangsmåde som den grundlæggende INDEX MATCH-funktion, der ser gennem en enkelt kolonne. Hvis du vil evaluere flere kriterier, opretter du to eller flere arrays med værdierne TRUE og FALSE, der repræsenterer match og ikke-match for hvert enkelt kriterium, og derefter multiplicerer du de tilsvarende elementer i disse arrays. Ved multiplikationen omdannes TRUE og FALSE til 1 og 0,og producerer et array, hvor 1'er svarer til rækker, der opfylder alle kriterierne. MATCH-funktionen med opslagsværdien 1 finder den første "1" i arrayet og sender dens position til INDEX, som returnerer en værdi i denne række fra den angivne kolonne.

    Formlen uden arrays er afhængig af INDEX-funktionens evne til at håndtere arrays. Den anden INDEX er konfigureret med 0 row_num så den sender hele kolonnearket til MATCH.

    Dette er en forklaring på et højt niveau af formlens logik. Du kan finde alle detaljer i Excel INDEX MATCH med flere kriterier.

    Excel INDEX MATCH med AVERAGE, MAX, MIN

    Microsoft Excel har særlige funktioner til at finde en minimums-, maksimums- og gennemsnitsværdi i et område. Men hvad nu, hvis du har brug for at få en værdi fra en anden celle, der er forbundet med disse værdier? I dette tilfælde skal du bruge MAX, MIN eller AVERAGE-funktionen sammen med INDEX MATCH.

    INDEX MATCH med MAX

    Hvis du vil finde den største værdi i kolonne D og returnere en værdi fra kolonne C i samme række, skal du bruge denne formel:

    =INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))

    INDEX MATCH med MIN

    Du kan bruge denne for at finde den mindste værdi i kolonne D og trække en tilhørende værdi fra kolonne C:

    =INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))

    INDEX MATCH med AVERAGE

    For at beregne den værdi, der ligger tættest på gennemsnittet i D2:D10 og få en tilsvarende værdi fra kolonne C, skal du bruge denne formel:

    =INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))

    Afhængigt af hvordan dine data er organiseret, skal du angive enten 1 eller -1 til det tredje argument (match_type) i MATCH-funktionen:

    • Hvis din opslagskolonne (kolonne D i vores tilfælde) er sorteret opstigende , sættes 1. Formlen beregner den største værdi, der er mindre end eller er lig med gennemsnitsværdien.
    • Hvis din opslagskolonne er sorteret faldende , indtast -1. Formlen beregner den mindste værdi, der er større end eller er lig med gennemsnitsværdien.
    • Hvis dit opslagsarray indeholder en værdi nøjagtigt ens til gennemsnittet, kan du indtaste 0 for nøjagtig match. Der kræves ingen sortering.

    I vores eksempel er befolkningerne i kolonne D sorteret i faldende rækkefølge, så vi bruger -1 som match type. Som resultat får vi "Tokyo", da dens befolkning (13.189.000) er det nærmeste match, der er større end gennemsnittet (12.269.006).

    Du vil måske være nysgerrig efter at vide, at VLOOKUP også kan udføre sådanne beregninger, men som en array-formel: VLOOKUP med AVERAGE, MAX, MIN.

    Brug af INDEX MATCH med IFNA / IFERROR

    Som du sikkert har bemærket, giver en INDEX MATCH-formel i Excel en #N/A-fejl, hvis den ikke kan finde en opslagsværdi. Hvis du ønsker at erstatte standardfejlnotationen med noget mere meningsfuldt, kan du indpakke din INDEX MATCH-formel i IFNA-funktionen. F.eks:

    =IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0))), "Der er ikke fundet nogen match")

    Og nu, hvis nogen indtaster en opslagstabel, som ikke findes i opslagsområdet, vil formlen udtrykkeligt informere brugeren om, at der ikke er fundet noget match:

    Hvis du ønsker at opfange alle fejl, ikke kun #N/A, skal du bruge IFERROR-funktionen i stedet for IFNA:

    =IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0))), "Ups, noget gik galt!")

    Husk på, at det i mange situationer kan være uklogt at skjule alle fejl, fordi de gør dig opmærksom på mulige fejl i din formel.

    Sådan bruger du INDEX og MATCH i Excel. Jeg håber, at vores eksempler på formler vil være nyttige for dig, og glæder mig til at se dig på vores blog i næste uge!

    Arbejdsbog til download

    Excel INDEX MATCH-eksempler (.xlsx-fil)

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.