Hur man använder INDEX-MATCH-formeln i Excel för att generera flera resultat

  • Dela Detta
Hugh West

När du arbetar med ett stort antal data måste du producera flera resultat. I Excel finns det ett mycket bekvämt sätt att extrahera flera resultat. I den här artikeln kommer vi att visa hur man använder INDEX-MATCH formel i Excel för att generera flera resultat.

Ladda ner Mall för praxis

Du kan ladda ner den kostnadsfria Excel-mallen för övningar här och öva på egen hand.

INDEX MATCH Flera resultat.xlsx

4 användbara sätt att implementera INDEX & amp; MATCH-funktionerna tillsammans i Excel för att extrahera flera resultat

I det här avsnittet diskuteras i detalj användningen av INDEX-funktionen och funktionen MATCH tillsammans i Excel för att få flera resultat.

1. Hitta flera resultat i en matris med hjälp av INDEX MATCH-formeln i Excel

Vi kan tänka oss följande dataset, där vi vill ta reda på de olika betygen för studenter i olika examina.

Det kan vi få fram genom att köra en INDEX-MATCH formeln i vårt kalkylblad.

Steg för att hitta flera resultat i en uppsättning av en matris med hjälp av INDEX-MATCH funktioner anges nedan.

Steg:

  • Välj ett namn från datasetet ( B5:B11 ) och skriv in namnet i en annan cell för att använda cellreferensnumret senare (t.ex. namn Villiers Cell G4 ).
  • I en annan cell som du vill ha som resultatcell (t.ex. Cell G7 ), skriv följande formel,
=INDEX($C$5:$C$11,SMALL(IF(ISNUMBER(MATCH($B$5:$B$11,$G$4,0)),MATCH(ROW($B$5:$B$11),ROW($B$5:$B$11)),""),ROWS($A$1:A1))))

Här,

$C$5:$C$11 = matrisen för att söka efter uppslagsvärdet

$B$5:$B$11 = den matris där uppslagsvärdet finns

  • Tryck på Gå in på .

Du kommer att märka att resultatet för uppgifterna (t.ex. Villiers ) som du placerar i den markerade cellen ( G4 ), kommer att visas i resultatrutan (t.ex. 65 G7 ).

  • Dra nu raden nedåt med Handtag för fyllning för att få fram resten av dina resultat för samma uppslagsvärde.

Eftersom den här processen inte är konstant för något specifikt värde kan du välja vilken uppslagsdata som helst i den valda cellen (t.ex. G4 ) och resultatet för den aktuella datan uppdateras automatiskt i resultatcellen (t.ex. G7 ).

För att förstå mer, se gif:en nedan.

Uppdelning av formel:

Låt oss dela upp formeln för att förstå hur vi fick fram resultatet.

  • MATCH($B$5:$B$11, $G$4, 0) blir,

-> MATCH({"Flintoff"; "Ronaldo"; "Plessis"; "Villiers"; "Beckham"; "Villiers"; "Plessis"}, "Villiers", 0)

-> Utgång: {#N/A; #N/A; #N/A; 1; #N/A; 1; #N/A; 1; #N/A}

Förklaring: Om sökvärdet hittar en matchning i uppslagsmatrisen, så kommer MATCH funktionen returnerar 1 , i annat fall återges #N/A .

  • ISNUMBER(MATCH($B$5:$B$11, $G$4, 0) blir,

-> ISNUMBER({#N/A; #N/A; #N/A; #N/A; 1; #N/A; 1; #N/A})

-> Utgång: {FALSK; FALSK; FALSK; FALSK; TRUE; FALSK; TRUE; FALSK}.

Förklaring: Som IF-funktionen kan inte hantera felvärden, så funktionen ISNUMBER används här för att konvertera arrayvärdena till booleska värden.

  • IF(ISNUMBER(MATCH($B$5:$B$11, $G$4, 0)), MATCH(ROW($B$5:$B$11), ROW($B$5:$B$11)), "") blir,

-> IF({FALSE; FALSE; FALSE; FALSE; TRUE; FALSE; TRUE; FALSE}, MATCH(ROW($B$5:$B$11), ROW($B$5:$B$11)), "")

blir

-> IF({FALSE; FALSE; FALSE; FALSE; TRUE; FALSE; TRUE; FALSE}, {1; 2; 3; 4; 5; 6; 7}, "")

-> Utgång: {""; ""; ""; ""; 4; ""; 6}

Förklaring: För det första, den IF Funktionen omvandlar de booleska värdena till radnummer och blanksteg. MATCH och ROW-funktionen s beräknar en matris med löpande nummer från 1 till n, där n är den sista numeriska identiteten för den totala storleken på cellintervallet. Som $B$5:$B$11 har 7 värden, så matrisen blir {1; 2; 3; 4; 5; 6; 7} .

  • SMALL(IF(ISNUMBER(MATCH($B$5:$B$11, $G$4, 0)), MATCH(ROW($B$5:$B$11), ROW($B$5:$B$11)), ""), ROWS($A$1:A1)))) blir

-> SMALL({""; ""; ""; ""; 4; ""; 6}, ROWS($A$1:A1))

-> SMALL({""; ""; ""; ""; 4; ""; 6}, 1)

-> Utgång: 4

Förklaring: Först, den SMALL-funktionen bestämmer vilket värde som ska hämtas baserat på radnumret. Därefter används Rader Funktionen returnerar ett tal som ändras varje gång cellen kopieras och klistras in i cellerna nedanför. 4 enligt vårt dataset. I nästa cell nedan, ROWS($A$1:A1) ändringar av ROWS($A$1:A2) och returnerar 6 .

  • INDEX($C$5:$C$11, SMALL(IF(ISNUMBER(MATCH($B$5:$B$11, $G$4, 0)), MATCH(ROW($B$5:$B$11), ROW($B$5:$B$11)), "")), ROWS($A$1:A1))) blir .

-> INDEX($C$5:$C$11, 4)

-> Utgång: 65

Förklaring: INDEX funktionen returnerar ett värde från en given matris baserat på ett rad- och kolumnnummer. 4:e värde i matrisen $C$5:$C$11 är 65 , så att den INDEX funktionen returnerar 65 i cellen G7 .

Läs mer: IF med INDEX-MATCH i Excel (3 lämpliga metoder)

2. Hitta flera resultat av namn & datum för kommande evenemang med INDEX MATCH-formeln i Excel

Ibland glömmer vi bort datumet för viktiga händelser. INDEX MATCH funktionerna fungerar som räddare.

Nedan följer ett exempel på data där vi vill veta vilken födelsedag våra vänner kommer att ha.

Så vad vi gjorde var att införa en INDEX MATCH formel för att ta reda på vem som fyller år nästa gång och när det är.

Så formeln för att veta personens namn eller namnet på den kommande händelsen är,

=INDEX($B$5:$B$9,MATCH(F5,$C$5:$C$9,1)+1)

Och formeln för att få reda på datumet för den kommande händelsen är,

=INDEX($C$5:$C$9,MATCH(F5,$C$5:$C$9,1)+1)

Uppdelning av formel:

Låt oss dela upp formeln för att förstå hur vi fick reda på namnet Alex och datumet för hans födelsedag.

  • MATCH(F5,$C$5:$C$9,1)

-> Utgång: 4

Förklaring: MATCH Funktionen hittar positionen för uppslagsvärdet ( Cell F5 = Torsdagen den 11 november 2021 ) i den konstanta matrisen ( $C$5:$C$9 = Förteckningen över datumen. ).

I det här exemplet ville vi inte ha en exakt matchning, vi ville ha den MATCH funktionen för att ge en ungefärlig matchning, så vi sätter det tredje argumentet till 1 (eller TRUE ).

  • INDEX($B$5:$B$9,MATCH(F5,$C$5:$C$9,1)+1) blir

-> INDEX($B$5:$B$9, 4) +1)

-> Resultat: Alex /(Evenemangets namn)

Förklaring: INDEX Funktionen tar två argument för att returnera ett specifikt värde i ett endimensionellt intervall. Här är intervallet $B$5:$B$9 är först argumentet och resultatet som vi fick från beräkningen i föregående avsnitt. (MATCH(F5,$C$5:$C$9,1)) , position 4 , är det andra argumentet, vilket innebär att vi söker efter värdet i positionen 4 i den $B$5:$B$9 sortiment.

Och,

  • INDEX($C$5:$C$9,MATCH(F5,$C$5:$C$9,1)+1) blir

-> INDEX($B$5:$B$9, 4) +1)

-> Utfall: tisdagen den 7 december 2021

Förklaring: INDEX Funktionen tar två argument för att returnera ett specifikt värde i ett endimensionellt intervall. Här är intervallet $C$5:$C$9 är först argumentet och resultatet som vi fick från beräkningen i föregående avsnitt. (MATCH(F5,$C$5:$C$9,1)) , position 4 , är det andra argumentet, vilket innebär att vi söker efter värdet i positionen 4 i den $C$5:$C$9 sortiment.

För att få fram datumet för den kommande händelsen lägger vi bara till en till den cellposition som returneras av MATCH funktionen, och den gav oss cellpositionen för nästa datum för händelsen.

Läs mer: Excel INDEX-MATCH-formel för att returnera flera värden horisontellt

Liknande läsningar

  • INDEX MATCH Flera kriterier med jokertecken i Excel (en fullständig guide)
  • [Rättad!] INDEX MATCH ger inte rätt värde i Excel (5 orsaker)
  • Hur man använder INDEX MATCH i stället för VLOOKUP i Excel (3 sätt)
  • INDEX+MATCH med dubbla värden i Excel (3 snabba metoder)
  • Hur man väljer specifika data i Excel (6 metoder)

3. Generera flera resultat i separata kolumner med hjälp av INDEX MATCH-formeln i Excel

Hittills har vi fått resultaten i rader, men vad händer om du vill få resultaten i separata kolumner .

Betrakta följande dataset, som består av tre typer av yrken som representerar flera namn på personer.

Vi ville skapa en grupp av människor utifrån yrket och vi ville placera namnen. kolumnvis i enlighet med deras yrke.

Om du vill extrahera flera matchningsresultat till separata celler i separata kolumner kan du göra ett litet trick med INDEX funktion.

Låt oss lära oss hur du extraherar flera matchningsresultat i flera kolumner i Excel med en kombination av INDEX funktioner och andra.

Steg:

  • Välj ett yrke från datafältet ( B5:B11 ) och placera uppgifterna i en annan cell för att använda cellreferensnumret senare (t.ex. yrke Cricketer Cell E5 ).
  • I en annan cell som du vill ha som resultatcell (t.ex. Cell F5 ), skriv följande formel,
=IFERROR(INDEX($C$5:$C$11,SMALL(IF($B$5:$B$11=$E5,ROW(C5:C11)-MIN(ROW(C5:C11))+1),COLUMNS($E$5:E5))),""")

Här,

$C$5:$C$11 = matrisen för att söka efter uppslagsvärdet

$B$5:$B$11 = den matris där uppslagsvärdet finns

  • Tryck på Gå in på .

Du kommer att märka att resultatet för uppgifterna (t.ex. Cricketspelare ) som du placerar i den markerade cellen ( E5 ), kommer att visas i resultatrutan (t.ex. Flintoff Cell F5 ).

  • Dra nu raden runt med Handtag för fyllning för att få resten av resultaten av samma uppslagsvärde i separata kolumner.

  • Dra raden runt igen genom att Handtag för fyllning för att få fram resten av dina resultat av olika uppslagsvärden (t.ex. Fotbollsspelare, Brottare ) i flera separata kolumner.

Uppdelning av formlerna:

Låt oss dela upp formeln för att förstå hur vi fick fram resultatet.

  • SMALL(IF($B$5:$B$11=$E5,ROW($C$5:$C$11)-MIN(ROW($C$5:$C$11))+1),COLUMNS($E$5:E5))

Vi vet redan från den tidigare diskussionen hur SMALL, IF och ROW fungerar tillsammans, och vi använder det tricket även här för att generera ett radnummer som motsvarar en N:e match. När vi väl har radnumret skickar vi det helt enkelt till INDEX funktion som returnerar värdet på den raden.

-> Utgång: ( som bilden nedan )

  • INDEX($C$5:$C$11,SMALL(IF($B$5:$B$11=$E5,ROW($C$5:$C$11)-MIN(ROW($C$5:$C$11))+1),COLUMNS($E$5:E5)))) -> överlämnar radnumren till den INDEX för att ta fram värdet för motsvarande radnummer.

-> Utgång: ( som bilden nedan )

  • IFERROR(INDEX($C$5:$C$11,SMALL(IF($B$5:$B$11=$E5,ROW(C5:C11)-MIN(ROW(C5:C11))+1),COLUMNS($E$5:E5))),""") -> Observera att när kolumner returnerar ett värde som inte finns, så uppstår en #NUM felet. För att undvika felet omsluter vi hela formeln med funktionen IFERROR för att fånga upp fel och sätta en tom sträng ("") som en retur.

-> Utgång: ( som bilden nedan )

Läs mer: Excel INDEX MATCH för att återge flera värden i en cell

4. Extrahera flera resultat i separata rader med hjälp av INDEX MATCH-funktioner i Excel

Om du undrar hur du ska extrahera flera resultat i flera rader på samma sätt som vi gjorde i föregående avsnitt, så är formeln följande,

=IFERROR(INDEX($C$5:$C$11,SMALL(IF($B$5:$B$11=E$4,ROW(C5:C11)-MIN(ROW(C5:C11))+1),ROWS($E$5:E5))),""")

Alla andra detaljer, t.ex. steg och formelfördelning, är desamma som i avsnitt 3.

Viktiga punkter som du måste hålla i minnet

  • Eftersom intervallet för datatabellmatrisen för att söka efter värdet är fast, glöm inte att sätta in dollar ($) framför cellreferensnumret för matrisbordet.
  • När du arbetar med arrayvärden får du inte glömma att trycka på Ctrl + Shift + Enter på tangentbordet medan du extraherar resultat. Om du bara trycker på Gå in på fungerar endast när du använder Microsoft 365 .
  • Efter att ha tryckt på Ctrl + Shift + Enter märker du att formellfältet omsluter formeln i hängande parenteser {} , och deklarerar den som en array-formel. Skriv inte in dessa parenteser {} Excel gör det automatiskt åt dig.

Slutsats

I den här artikeln förklaras i detalj hur du använder INDEX MATCH funktioner för att extrahera flera resultat i Excel. Jag hoppas att den här artikeln har varit till stor nytta för dig. Fråga gärna om du har några frågor om ämnet.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.