Innehållsförteckning
Den här handledningen visar hur du använder INDEX och MATCH i Excel och hur det är bättre än VLOOKUP.
I ett par av de senaste artiklarna har vi försökt förklara grunderna i VLOOKUP-funktionen för nybörjare och ge mer komplexa exempel på VLOOKUP-formler för avancerade användare. Nu ska jag försöka att om inte övertala dig att inte använda VLOOKUP, så ska jag åtminstone visa dig ett alternativt sätt att göra en vertikal sökning i Excel.
"Varför behöver jag det?" undrar du kanske. VLOOKUP har många begränsningar som kan hindra dig från att få önskat resultat i många situationer. Å andra sidan är kombinationen INDEX MATCH mer flexibel och har många fantastiska funktioner som gör den överlägsen VLOOKUP i många avseenden.
Excel-funktionerna INDEX och MATCH - grunderna
Eftersom syftet med den här handledningen är att visa ett alternativt sätt att göra en vlookup i Excel genom att använda en kombination av INDEX- och MATCH-funktionerna, kommer vi inte att uppehålla oss särskilt länge vid deras syntax och användningsområden. Vi kommer att täcka endast det minimum som krävs för att förstå den allmänna idén och sedan ta en djupgående titt på formelexempel som avslöjar alla fördelarna med att använda INDEX MATCH i stället för VLOOKUP.
INDEX-funktionen - syntax och användning
Excel-funktionen INDEX returnerar ett värde i en matris baserat på de rad- och kolumnnummer som du anger. Syntaxen för INDEX-funktionen är enkel:
INDEX(array, row_num, [column_num])Här är en mycket enkel förklaring av varje parameter:
- matris - ett intervall av celler som du vill returnera ett värde från.
- row_num - radnumret i matrisen från vilken du vill returnera ett värde. Om det utelämnas krävs column_num.
- kolumn_nummer - kolumnnumret i matrisen från vilken du vill returnera ett värde. Om det utelämnas krävs row_num.
Mer information finns i Excel INDEX-funktionen.
Här är ett exempel på INDEX-formeln i sin enklaste form:
=INDEX(A1:C10,2,3)
Formeln söker i cellerna A1 till C10 och returnerar ett värde för cellen i den andra raden och tredje kolumnen, dvs. cell C2.
Mycket enkelt, eller hur? Men när du arbetar med riktiga data vet du nästan aldrig vilken rad och kolumn du vill ha, och det är där funktionen MATCH kommer väl till pass.
MATCH-funktionen - syntax och användning
Excel-funktionen MATCH söker efter ett uppslagsvärde i ett antal celler och returnerar det Relativ position. av det värdet i intervallet.
Syntaxen för funktionen MATCH är följande:
MATCH(lookup_value, lookup_array, [match_type])- Lookup_value - det nummer eller textvärde som du letar efter.
- Lookup_array - ett intervall av celler som söks.
- match_type - anger om en exakt träff eller den närmaste träffen ska returneras:
- 1 eller utelämnas - hittar det största värdet som är mindre än eller lika med uppslagsvärdet. Kräver att uppslagsarrayn sorteras i stigande ordning.
- 0 - hittar det första värdet som är exakt lika med uppslagsvärdet. I kombinationen INDEX/MATCH behöver du nästan alltid en exakt matchning, så du ställer in det tredje argumentet i MATCH-funktionen till 0.
- -1 - hittar det minsta värdet som är större än eller lika med lookup_value. Kräver att lookup-matrisen sorteras i fallande ordning.
Om till exempel intervallet B1:B3 innehåller värdena "New-York", "Paris" och "London" ger formeln nedan siffran 3, eftersom "London" är den tredje posten i intervallet:
=MATCH("London",B1:B3,0)
Mer information finns i Excel MATCH-funktionen.
Vid första anblicken kan man ifrågasätta MATCH-funktionens användbarhet. Vem bryr sig om ett värdes position i ett intervall? Det vi vill veta är själva värdet.
Låt mig påminna dig om att den relativa positionen för uppslagsvärdet (dvs. rad- och kolumnnummer) är precis vad du behöver ange till row_num och kolumn_nummer argumenten i INDEX-funktionen. Som du minns kan Excel INDEX hitta värdet i korsningen mellan en given rad och kolumn, men den kan inte avgöra exakt vilken rad och vilken kolumn du vill ha.
Hur du använder funktionen INDEX MATCH i Excel
Nu när du känner till grunderna tror jag att du redan har börjat förstå hur MATCH och INDEX fungerar tillsammans. Kort sagt hittar INDEX uppslagsvärdet med hjälp av kolumn- och radnummer, och MATCH ger dig dessa nummer.
För vertikal sökning använder du funktionen MATCH endast för att bestämma radnumret och anger kolumnintervallet direkt till INDEX:
INDEX ( kolumn för att returnera ett värde från , MATCH ( Uppslagsvärde , kolumn att se upp mot , 0))Har du fortfarande svårt att förstå det? Det kanske är lättare att förstå med hjälp av ett exempel: Anta att du har en lista över nationella huvudstäder och deras befolkning:
Om du vill ta reda på befolkningen i en viss huvudstad, till exempel Japans huvudstad, kan du använda följande INDEX MATCH-formel:
=INDEX(C2:C10, MATCH("Japan", A2:A10, 0))
Låt oss nu analysera vad varje komponent i denna formel faktiskt gör:
- Funktionen MATCH söker efter uppslagsvärdet "Japan" i intervallet A2:A10 och returnerar siffran 3, eftersom "Japan" står på tredje plats i uppslagsarrayen.
- Radnumret går direkt till row_num argumentet för INDEX som instruerar den att returnera ett värde från den raden.
Formeln ovan blir alltså en enkel INDEX(C2:C,3) som säger att du ska söka i cellerna C2 till C10 och hämta värdet från den tredje cellen i det intervallet, dvs. C4 eftersom vi börjar räkna från den andra raden.
Om du inte vill skriva in staden i formeln kan du skriva in den i en cell, till exempel F1, ange cellreferensen i MATCH och du får en dynamisk formel för sökning:
=INDEX(C2:C10, MATCH(F1,A2:A10,0))
Viktig notering! Antalet rader i matris argumentet för INDEX bör motsvara antalet rader i Lookup_array argumentet i MATCH, annars ger formeln ett felaktigt resultat.
Vänta, vänta... varför använder vi inte helt enkelt följande Vlookup-formel? Vad är det för mening med att slösa tid på att försöka förstå de mystiska detaljerna i Excel MATCH INDEX?
=VLOOKUP(F1, A2:C10, 3, FALSE)
I det här fallet är det ingen idé alls :) Det här enkla exemplet är bara för demonstration, så att du får en känsla för hur funktionerna INDEX och MATCH fungerar tillsammans. Andra exempel som följer nedan kommer att visa dig den verkliga kraften i den här kombinationen som enkelt klarar av många komplexa scenarier när VLOOKUP inte fungerar.
Tips:
- I Excel 365 och Excel 2021 kan du använda en modernare INDEX XMATCH-formel.
- För Google Sheets, se formelexempel med INDEX MATCH i den här artikeln.
INDEX MATCH vs. VLOOKUP
När det gäller vilken funktion som ska användas för vertikala sökningar är de flesta Excel-gurus överens om att INDEX MATCH är mycket bättre än VLOOKUP. Många använder dock fortfarande VLOOKUP, för det första för att det är enklare och för det andra för att de inte förstår alla fördelar med att använda INDEX MATCH-formeln i Excel. Utan en sådan förståelse är ingen villig att investera tid i att lära sig en mer komplicerad funktion.syntax.
Nedan kommer jag att peka på de viktigaste fördelarna med MATCH INDEX jämfört med VLOOKUP, så att du kan avgöra om det är ett värdefullt tillägg till din Excel-arsenal.
4 huvudskäl till att använda INDEX MATCH i stället för VLOOKUP
- Uppslag från höger till vänster. Som alla erfarna användare vet kan VLOOKUP inte titta till vänster, vilket innebär att ditt uppslagsvärde alltid ska finnas i den vänstra kolumnen i tabellen. INDEX MATCH kan enkelt göra uppslag till vänster! Följande exempel visar det i praktiken: Hur man gör uppslag till vänster i Excel.
- Lägg in eller ta bort kolumner på ett säkert sätt. VLOOKUP-formlerna går sönder eller ger felaktiga resultat när en ny kolumn tas bort från eller läggs till i en uppslagstabell eftersom VLOOKUP-syntaxen kräver att indexnumret för den kolumn som du vill hämta data från anges. När du lägger till eller tar bort kolumner ändras naturligtvis indexnumret.
Med INDEX MATCH anger du det återkommande kolumnområdet, inte ett indexnummer. Du kan därför lägga in och ta bort så många kolumner som du vill utan att behöva oroa dig för att uppdatera varje tillhörande formel.
- Ingen begränsning för storleken på ett uppslagsvärde. När du använder VLOOKUP-funktionen får den totala längden på dina uppslagskriterier inte överstiga 255 tecken, annars kommer du att få felet #VALUE! Så om ditt dataset innehåller långa strängar är INDEX MATCH den enda fungerande lösningen.
- Högre bearbetningshastighet. Om dina tabeller är relativt små blir det knappast någon större skillnad i Excel-prestanda. Men om dina kalkylblad innehåller hundratals eller tusentals rader, och följaktligen hundratals eller tusentals formler, kommer MATCH INDEX att fungera mycket snabbare än VLOOKUP, eftersom Excel bara behöver bearbeta kolumnerna för sökning och återgivning i stället för hela tabellmatrisen.
VLOOKUP:s inverkan på Excels prestanda kan vara särskilt märkbar om arbetsboken innehåller komplexa matrisformler som VLOOKUP och SUM. Poängen är att kontrollen av varje värde i matrisen kräver ett separat anrop av VLOOKUP-funktionen. Ju fler värden matrisen innehåller och ju fler matrisformler du har i en arbetsbok, desto långsammare är Excel.
Excel INDEX MATCH - exempel på formler
När du vet varför du bör lära dig funktionen MATCH INDEX, kan vi gå vidare till den mest intressanta delen och se hur du kan tillämpa den teoretiska kunskapen i praktiken.
INDEX MATCH-formeln för att titta uppåt från höger till vänster
Som redan nämnts kan VLOOKUP inte titta till vänster. Så om inte dina uppslagsvärden ligger längst till vänster i kolumnen finns det ingen chans att en Vlookup-formel ger dig det resultat du vill ha. INDEX MATCH-funktionen i Excel är mer mångsidig och bryr sig inte om var uppslags- och returkolumnerna är placerade.
I det här exemplet lägger vi till kolumnen Rank till vänster i vår exempeltabell och försöker ta reda på hur den ryska huvudstaden Moskva ligger till i förhållande till folkmängd.
Med uppslagsvärdet i G1 använder du följande formel för att söka i C2:C10 och returnera ett motsvarande värde från A2:A10:
=INDEX(A2:A10,MATCH(G1,C2:C10,0))
Tips: Om du planerar att använda INDEX MATCH-formeln för mer än en cell, se till att låsa båda intervallerna med absoluta cellreferenser (t.ex. $A$2:$A$10 och $C$2:4C$10) så att de inte förvrängs när du kopierar formeln.
INDEX MATCH MATCH MATCH för att söka i rader och kolumner
I exemplen ovan använde vi INDEX MATCH som ersättning för klassisk VLOOKUP för att returnera ett värde från ett fördefinierat intervall på en kolumn. Men vad händer om du behöver söka i flera rader och kolumner? Med andra ord, vad händer om du vill utföra den så kallade matris eller . tvåvägs uppslag?
Det kan låta knepigt, men formeln är mycket lik den grundläggande Excel-funktionen INDEX MATCH, med en enda skillnad.
Använd helt enkelt två MATCH-funktioner - en för att få fram ett radnummer och den andra för att få fram ett kolumnnummer. Och jag gratulerar de av er som har gissat rätt :)
INDEX (array, MATCH ( värde för vlookup , kolumn att se upp mot , 0), MATCH ( hlookup-värde , rad att se upp mot , 0))Ta nu en titt på tabellen nedan och låt oss skapa en INDEX MATCH MATCH-formel för att hitta befolkningen (i miljoner) i ett visst land under ett visst år.
Med mållandet i G1 (vlookup-värde) och målåret i G2 (hlookup-värde) får formeln följande form:
=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))
Hur denna formel fungerar
När du behöver förstå en komplex Excel-formel kan du dela upp den i mindre delar och se vad varje enskild funktion gör:
MATCH(G1,A2:A11,0)
- söker genom A2:A11 efter värdet i cell G1 ("Kina") och returnerar dess position, som är 2.
MATCH(G2,B1:D1,0))
- söker genom B1:D1 för att få fram positionen för värdet i cell G2 ("2015"), som är 3.
Ovanstående rad- och kolumnnummer motsvarar motsvarande argument i INDEX-funktionen:
INDEX(B2:D11, 2, 3)
Resultatet blir ett värde i skärningspunkten mellan den andra raden och den tredje kolumnen i intervallet B2:D11, vilket är värdet i cell D3. Enkelt? Ja!
Excel INDEX MATCH för att söka efter flera kriterier
Om du hade chansen att läsa vår Excel VLOOKUP-handledning har du förmodligen redan testat en formel för Vlookup med flera kriterier. En betydande begränsning av det tillvägagångssättet är dock behovet av att lägga till en hjälparkolumn. Den goda nyheten är att Excels INDEX MATCH-funktion kan söka upp med två eller flera kriterier också, utan att ändra eller omstrukturera dina källdata!
Här är den generiska INDEX MATCH-formeln med flera kriterier:
{=INDEX( return_range , MATCH(1, ( kriterier1 = intervall1 ) * ( kriterier2 = intervall2 ), 0))}Observera: Detta är en matrisformel som måste fyllas i med kortkommandot Ctrl + Shift + Enter.
I exempeltabellen nedan antar vi att du vill hitta beloppet baserat på två kriterier, Kund och Produkt .
Följande INDEX MATCH-formel fungerar utmärkt:
=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))
Där C2:C10 är intervallet som ska returnera ett värde från, F1 är kriterium 1, A2:A10 är intervallet som ska jämföras med kriterium 1, F2 är kriterium 2 och B2:B10 är intervallet som ska jämföras med kriterium 2.
Kom ihåg att skriva in formeln korrekt genom att trycka på Ctrl + Shift + Enter, så kommer Excel automatiskt att sätta in den inom parenteser som visas i skärmdumpen:
Om du hellre vill slippa använda matrisformler i dina kalkylblad kan du lägga till ytterligare en INDEX-funktion i formeln och slutföra den med en vanlig Enter-knapp:
Hur dessa formler fungerar
Formlerna använder samma tillvägagångssätt som den grundläggande INDEX MATCH-funktionen som tittar i en enda kolumn. För att utvärdera flera kriterier skapar du två eller flera matriser med TRUE- och FALSE-värden som representerar matchningar och icke-matchningar för varje enskilt kriterium och multiplicerar sedan motsvarande element i dessa matriser. Multiplikationen omvandlar TRUE och FALSE till 1 och 0,Funktionen MATCH med ett uppslagsvärde på 1 hittar den första "1" i matrisen och överför dess position till INDEX, som returnerar ett värde i denna rad från den angivna kolumnen.
Formeln som inte är ett matriserum är beroende av INDEX-funktionens förmåga att hantera matriser. Den andra INDEX-funktionen är konfigurerad med 0 row_num så att hela kolumnmatrisen överförs till MATCH.
Detta är en förklaring på hög nivå av formelns logik. För fullständig information, se Excel INDEX MATCH med flera kriterier.
Excel INDEX MATCH med AVERAGE, MAX, MIN
Microsoft Excel har särskilda funktioner för att hitta ett lägsta, högsta och genomsnittligt värde i ett intervall. Men vad händer om du behöver hämta ett värde från en annan cell som är associerad med dessa värden? I det här fallet använder du funktionen MAX, MIN eller AVERAGE tillsammans med INDEX MATCH.
INDEX MATCH med MAX
Om du vill hitta det största värdet i kolumn D och returnera ett värde från kolumn C i samma rad använder du den här formeln:
=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))
INDEX MATCH med MIN
Använd den här för att hitta det minsta värdet i kolumn D och ta fram ett tillhörande värde från kolumn C:
=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))
INDEX MATCH med AVERAGE
För att räkna ut det värde som ligger närmast genomsnittet i D2:D10 och få fram ett motsvarande värde från kolumn C, ska du använda den här formeln:
=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))
Beroende på hur dina data är organiserade ska du ange antingen 1 eller -1 till det tredje argumentet (match_type) i MATCH-funktionen:
- Om din uppslagskolumn (kolumn D i vårt fall) är sorterad stigande , sätt 1. Formeln beräknar det största värdet som är mindre än eller lika med medelvärdet.
- Om din uppslagskolumn är sorterad nedåtgående ange -1. Formeln beräknar det minsta värdet som är är större än eller lika med medelvärdet.
- Om din uppslagsarray innehåller ett värde är exakt lika. till genomsnittet kan du ange 0 för exakt matchning. Ingen sortering krävs.
I vårt exempel är befolkningarna i kolumn D sorterade i fallande ordning, så vi använder -1 för matchningstyp. Som resultat får vi "Tokyo" eftersom dess befolkning (13 189 000) är den närmaste matchningen som är större än genomsnittet (12 269 006).
Du kanske är nyfiken på att VLOOKUP också kan utföra sådana beräkningar, men som en matrisformel: VLOOKUP med AVERAGE, MAX, MIN.
Använda INDEX MATCH med IFNA / IFERROR
Som du säkert har märkt, om en INDEX MATCH-formel i Excel inte kan hitta ett uppslagsvärde, så visas ett #N/A-fel. Om du vill ersätta standardfelnoteringen med något mer meningsfullt, kan du använda IFNA-funktionen i din INDEX MATCH-formel. Till exempel:
=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Ingen matchning har hittats")
Om någon matar in en uppslagstabell som inte finns i uppslagsintervallet kommer formeln nu uttryckligen att informera användaren om att ingen matchning har hittats:
Om du vill fånga upp alla fel, inte bara #N/A, använder du funktionen IFERROR i stället för IFNA:
=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oj, något gick fel!")
Tänk på att det i många situationer kan vara oklokt att dölja alla fel eftersom de varnar dig för eventuella fel i formeln.
Så här använder du INDEX och MATCH i Excel. Jag hoppas att våra formelexempel är till hjälp för dig och ser fram emot att se dig på vår blogg nästa vecka!
Arbetsbok för övning för nedladdning
Excel INDEX MATCH-exempel (.xlsx-fil)