Vad att veta
- INDEX-funktionen kan användas ensam, men att kapsla MATCH-funktionen inuti den skapar en avancerad sökning.
- Den här kapslade funktionen är mer flexibel än VLOOKUP och kan ge resultat snabbare.
Den här artikeln förklarar hur du använder funktionerna INDEX och MATCH tillsammans i alla versioner av Excel, inklusive Excel 2019 och Microsoft 365.
Vad är funktionerna INDEX och MATCH?
INDEX och MATCH är Excel-uppslagsfunktioner. Även om de är två helt separata funktioner som kan användas var för sig, kan de också kombineras för att skapa avancerade formler.
Funktionen INDEX returnerar ett värde eller referensen till ett värde från ett visst urval. Den kan till exempel användas för att hitta värdet i den andra raden i en datamängd, eller i den femte raden och den tredje kolumnen.
Medan INDEX mycket väl kan användas ensamt, gör kapsling av MATCH i formeln den lite mer användbar. MATCH-funktionen söker efter ett specificerat objekt i ett cellintervall och returnerar sedan objektets relativa position i intervallet. Det kan till exempel användas för att fastställa att ett specifikt namn är det tredje objektet i en namnlista.
INDEX and MATCH Syntax & Argument
Så här måste båda funktionerna skrivas för att Excel ska förstå dem:
=INDEX(array, row_num, [column_num])
- array är cellintervallet som formeln kommer att använda. Det kan vara en eller flera rader och kolumner, till exempel A1:D5. Det krävs.
- row_num är raden i matrisen från vilken ett värde ska returneras, till exempel 2 eller 18. Det krävs om inte kolumn_num finns.
- column_num är kolumnen i arrayen från vilken ett värde ska returneras, till exempel 1 eller 9. Det är valfritt.
=MATCH(lookup_value, lookup_array, [match_type])
- lookup_value är värdet du vill matcha i lookup_array. Det kan vara ett tal, text eller logiskt värde som skrivs manuellt eller refereras till via en cellreferens. Detta krävs.
- lookup_array är cellintervallet att titta igenom. Det kan vara en enstaka rad eller en kolumn, till exempel A2:D2 eller G1:G45. Detta krävs.
- match_type kan vara -1, 0 eller 1. Den anger hur lookup_value matchas med värden i lookup_array (se nedan). 1 är standardvärdet om detta argument utelämnas.
Vilken matchningstyp att använda | |||
---|---|---|---|
Matchtyp | What It Does | Regel | Exempel |
1 | Hittar det största värdet som är mindre än eller lika med lookup_value. | Lookup_array-värdena måste placeras i stigande ordning (t.ex. -2, -1, 0, 1, 2; eller A-Z;, eller FALSE, TRUE. | lookup_value är 25 men det saknas i lookup_array, så positionen för det näst minsta talet, som 22, returneras istället. |
0 | Hittar det första värdet som är exakt lika med lookup_value. | lookup_array-värdena kan vara i valfri ordning. | lookup_value är 25, så det returnerar positionen 25. |
-1 | Hittar det minsta värdet som är större eller lika med lookup_value. | Lookup_array-värdena måste placeras i fallande ordning (t.ex. 2, 1, 0, -1, -2). | lookup_value är 25 men det saknas i lookup_array, så positionen för det näst största talet, som 34, returneras istället. |
Använd 1 eller -1 för tillfällen då du behöver göra en ungefärlig sökning längs en skala, som när du hanterar siffror och när approximationer är okej. Men kom ihåg att om du inte anger match_type kommer 1 att vara standard, vilket kan skeva resultatet om du verkligen vill ha en exakt matchning.
Exempel på INDEX- och MATCH-formler
Innan vi tittar på hur man kombinerar INDEX och MATCH till en formel måste vi förstå hur dessa funktioner fungerar på egen hand.
INDEX Exempel
=INDEX(A1:B2, 2, 2)
=INDEX(A1:B1, 1)
=INDEX(2:2, 1)=INDEX(B1:B2; 1)
I det här första exemplet finns det fyra INDEX-formler vi kan använda för att få olika värden:
- =INDEX(A1:B2, 2, 2) tittar igenom A1:B2 för att hitta värdet i den andra kolumnen och andra raden, som är Stacy.
- =INDEX(A1:B1, 1) letar igenom A1:B1 för att hitta värdet i den första kolumnen, som är Jon.
- =INDEX(2:2, 1) tittar igenom allt i den andra raden för att hitta värdet i den första kolumnen, vilket är Tim.
- =INDEX(B1:B2, 1) tittar igenom B1:B2 för att hitta värdet på den första raden, vilket är Amy.
MATCH Exempel
=MATCH("Stacy", A2:D2, 0)
=MATCH(14, D1:D2)
=MATCH(14, D1:D2, -1)=MATCH(13, A1:D1, 0)
Här är fyra enkla exempel på MATCH-funktionen:
- =MATCH("Stacy", A2:D2, 0) söker efter Stacy i intervallet A2:D2 och returnerar 3 som resultat.
- =MATCH(14, D1:D2) söker efter 14 i intervallet D1:D2, men eftersom det inte finns i tabellen hittar MATCH det näst största värdet som är mindre än eller lika med 14, vilket i det här fallet är 13, vilket är i position 1 i lookup_array.
- =MATCH(14, D1:D2, -1) är identisk med formeln ovanför den, men eftersom arrayen inte är i fallande ordning som -1 kräver, vi får ett fel.
- =MATCH(13, A1:D1, 0) letar efter 13 i den första raden på arket, vilket returnerar 4 eftersom det är det fjärde objektet i denna array.
INDEX-MATCH Exempel
Här är två exempel där vi kan kombinera INDEX och MATCH i en formel:
Hitta cellreferens i tabell
=INDEX(B2:B5, MATCH(F1, A2:A5))
Det här exemplet kapslar MATCH-formeln i INDEX-formeln. Målet är att identifiera artikelns färg med hjälp av artikelnumret.
Om du tittar på bilden kan du se i "Separerade" raderna hur formlerna skulle skrivas på egen hand, men eftersom vi kapslar dem är det här som händer:
- MATCH(F1, A2:A5) söker efter F1-värdet (8795) i datamängden A2:A5. Om vi räknar ner kolumnen kan vi se att den är 2, så det var vad MATCH-funktionen precis kom på.
- INDEX-matrisen är B2:B5 eftersom vi i slutändan letar efter värdet i den kolumnen.
- INDEX-funktionen kunde nu skrivas om så här eftersom 2 är vad MATCH hittade: INDEX(B2:B5, 2, [column_num]).
- Eftersom column_num är valfritt, kan vi ta bort det för att lämnas med detta: INDEX(B2:B5, 2).
- Så nu är det här som en normal INDEX-formel där vi hittar värdet på den andra posten i B2:B5, som är röd.
Sök efter rad- och kolumnrubriker
=INDEX(B2:E13, MATCH(G1, A2:A13, 0), MATCH(G2, B1:E1, 0))
I det här exemplet med MATCH och INDEX gör vi en tvåvägssökning. Tanken är att se hur mycket pengar vi tjänade på gröna föremål i maj. Detta liknar verkligen exemplet ovan, men en extra MATCH-formel är kapslad i INDEX.
- MATCH(G1, A2:A13, 0) är det första objektet som löses i denna formel. Den letar efter G1 (ordet "maj") i A2:A13 för att få ett visst värde. Vi ser det inte här, men det är 5.
- MATCH(G2, B1:E1, 0) är den andra MATCH-formeln, och den liknar verkligen den första men letar istället efter G2 (ordet "Grön") i kolumnrubrikerna vid B1:E1. Den här löser sig till 3.
- Vi kan nu skriva om INDEX-formeln så här för att visualisera vad som händer: =INDEX(B2:E13, 5, 3). Detta letar i hela tabellen, B2:E13, efter den femte raden och den tredje kolumnen, som returnerar $180.
MATCH och INDEX-regler
Det finns flera saker att tänka på när du skriver formler med dessa funktioner:
- MATCH är inte skiftlägeskänslig, så stora och små bokstäver behandlas på samma sätt när textvärden matchas.
- MATCH returnerar N/A av flera skäl: om match_type är 0 och lookup_value inte hittas om match_type är -1 och lookup_array inte är i fallande ordning, om match_type är 1 och lookup_array inte är i stigande ordning, och om lookup_array inte är en enda rad eller kolumn.
- Du kan använda ett jokertecken i lookup_value-argumentet om match_type är 0 och lookup_value är en textsträng. Ett frågetecken matchar varje enskilt tecken och en asterisk matchar alla teckensekvenser (t.t.ex. =MATCH("Jo", 1:1, 0)). För att använda MATCH för att hitta ett faktiskt frågetecken eller asterisk, skriv ~ först.
- INDEX returnerar REF! om row_num och column_num inte pekar på en cell i arrayen.
Relaterade Excel-funktioner
MATCH-funktionen liknar LOOKUP, men MATCH returnerar objektets position istället för själva objektet.
VLOOKUP är en annan uppslagsfunktion som du kan använda i Excel, men till skillnad från MATCH som kräver INDEX för avancerade uppslagningar behöver VLOOKUP-formler bara den ena funktionen.