Excel INDEX-funktionen med formelexempel

  • Dela Detta
Michael Brown

I den här handledningen hittar du ett antal formelexempel som visar hur INDEX kan användas mest effektivt i Excel.

Av alla Excel-funktioner vars kraft ofta underskattas och underutnyttjas är INDEX definitivt någonstans på topp 10. Under tiden är den här funktionen smart, smidig och mångsidig.

Vad är INDEX-funktionen i Excel? En INDEX-formel returnerar i princip en cellreferens från en given matris eller ett givet intervall. Med andra ord använder du INDEX när du känner till (eller kan beräkna) positionen för ett element i ett intervall och du vill få fram det faktiska värdet för det elementet.

Det låter kanske lite trivialt, men när du inser den verkliga potentialen hos INDEX-funktionen kan den göra avgörande förändringar i hur du beräknar, analyserar och presenterar data i dina kalkylblad.

    Excel INDEX-funktionen - syntax och grundläggande användningsområden

    Det finns två versioner av INDEX-funktionen i Excel - arrayform och referensform. Båda formerna kan användas i alla versioner av Microsoft Excel 365 - 2003.

    INDEX-format för matriser

    Formuläret INDEX array returnerar värdet för ett visst element i ett intervall eller en array baserat på de rad- och kolumnnummer som du anger.

    INDEX(array, row_num, [column_num])
    • matris - är ett cellområde, ett namngivet område eller en tabell.
    • row_num - är radnumret i matrisen från vilken ett värde ska returneras. Om row_num utelämnas krävs column_num.
    • kolumn_nummer - är kolumnnumret från vilket ett värde ska returneras. Om column_num utelämnas krävs row_num.

    Exempelvis kan formeln =INDEX(A1:D6, 4, 3) returnerar värdet i skärningspunkten mellan fjärde raden och tredje kolumnen i intervallet A1:D6, vilket är värdet i cell C4.

    För att få en uppfattning om hur INDEX-formeln fungerar på riktiga data kan du ta en titt på följande exempel:

    I stället för att ange rad- och kolumnnummer i formeln kan du ange cellreferenser för att få en mer universell formel: =INDEX($B$2:$D$6, G2, G1)

    Denna INDEX-formel returnerar alltså antalet artiklar exakt i skärningspunkten mellan det produktnummer som anges i G2 (row_num) och det veckonummer som anges i cell G1 (column_num).

    Tips. Användningen av absoluta referenser ($B$2:$D$6) i stället för relativa referenser (B2:D6) i arrayargumentet gör det lättare att kopiera formeln till andra celler. Alternativt kan du konvertera ett intervall till en tabell ( Ctrl + T ) och hänvisa till det med tabellnamnet.

    INDEX-arrayformulär - saker att komma ihåg

    1. Om arrayargumentet består av endast en rad eller kolumn kan du ange motsvarande row_num- eller column_num-argument eller inte.
    2. Om array-argumentet innehåller mer än en rad och row_num utelämnas eller sätts till 0 returnerar INDEX-funktionen en array med hela kolumnen. På samma sätt returnerar INDEX-formeln hela raden om array innehåller mer än en kolumn och column_num-argumentet utelämnas eller sätts till 0. Här är ett exempel på en formel som visar detta beteende.
    3. Argumenten row_num och column_num måste hänvisa till en cell i matrisen, annars returnerar INDEX-formeln felet #REF!

    INDEX referensformulär

    Referensformen av Excel-funktionen INDEX returnerar cellreferensen i skärningspunkten mellan den angivna raden och kolumnen.

    INDEX(referens, row_num, [column_num], [area_num] )
    • referens - är ett eller flera intervall.

      Om du anger mer än ett intervall, separerar du intervallerna med kommatecken och sätter referensargumentet inom parentes, till exempel (A1:B5, D1:F5).

      Om varje intervall i referensen endast innehåller en rad eller kolumn är motsvarande argument row_num eller column_num valfritt.

    • row_num - radnumret i intervallet från vilket en cellreferens ska returneras, det liknar arrayformen.
    • kolumn_nummer - kolumnnumret från vilket en cellreferens ska returneras, fungerar också på samma sätt som arrayformen.
    • area_num - En valfri parameter som anger vilket intervall från referensargumentet som ska användas. Om den inte anges kommer INDEX-formeln att återge resultatet för det första intervallet som anges i referens.

    Exempelvis kan formeln =INDEX((A2:D3, A5:D7), 3, 4, 2) returnerar värdet i cell D7, som ligger i skärningspunkten mellan den tredje raden och den fjärde kolumnen i det andra området (A5:D7).

    INDEX-referensformulär - saker att komma ihåg

    1. Om argumentet row_num eller column_num är noll (0) returnerar en INDEX-formel referensen för hela kolumnen respektive raden.
    2. Om både row_num och column_num utelämnas returnerar INDEX-funktionen det område som anges i argumentet area_num.
    3. Alla _num-argument (row_num, column_num och area_num) måste hänvisa till en cell inom referens, annars returnerar INDEX-formeln felet #REF!

    Båda de INDEX-formler som vi har diskuterat hittills är mycket enkla och illustrerar bara konceptet. Dina riktiga formler är troligen mycket mer komplexa än så, så låt oss utforska några av de mest effektiva användningsområdena för INDEX i Excel.

    Hur man använder INDEX-funktionen i Excel - exempel på formler

    Det finns kanske inte många praktiska användningsområden för Excel INDEX i sig själv, men i kombination med andra funktioner som MATCH eller COUNTA kan den skapa mycket kraftfulla formler.

    Källdata

    För alla våra INDEX-formler (utom den sista) kommer vi att använda nedanstående data. För enkelhetens skull är de organiserade i en tabell som heter SourceData .

    Användningen av tabeller eller namngivna intervall kan göra formlerna lite längre, men det gör dem också betydligt mer flexibla och mer lättlästa. För att justera en INDEX-formel för dina kalkylblad behöver du bara ändra ett enda namn, och detta kompenserar helt för att formeln är längre.

    Det finns naturligtvis inget som hindrar dig från att använda vanliga intervall om du vill. I det här fallet ersätter du helt enkelt tabellnamnet SourceData med lämplig intervallreferens.

    1. Hämta det nionde objektet från listan

    Detta är den grundläggande användningen av INDEX-funktionen och den enklaste formeln att göra. För att hämta ett visst objekt från listan skriver du bara =INDEX(intervall, n) där sortiment är ett intervall av celler eller ett namngivet intervall, och n är positionen för det objekt som du vill hämta.

    När du arbetar med Excel-tabeller kan du markera kolumnen med musen och Excel tar med kolumnens namn tillsammans med tabellens namn i formeln:

    För att få fram värdet på cellen i skärningspunkten mellan en given rad och kolumn använder du samma tillvägagångssätt med den enda skillnaden att du anger båda - radnumret och kolumnnumret. Du har faktiskt redan sett en sådan formel i praktiken när vi diskuterade INDEX-arrayformuläret.

    Och här är ytterligare ett exempel: För att hitta den näst största planeten i solsystemet i vår exempeltabell sorterar du tabellen efter Diameter kolumnen och använda följande INDEX-formel:

    =INDEX(SourceData, 2, 3)

    • Array är tabellens namn eller en intervallreferens, SourceData i det här exemplet.
    • Row_num är 2 eftersom du letar efter det andra objektet i listan, som finns i det andra
    • Kolumn_nummer är 3 eftersom Diameter är den tredje kolumnen i tabellen.

    Om du vill återge planetens namn i stället för diameter ändrar du column_num till 1. Och naturligtvis kan du använda en cellreferens i argumenten row_num och/eller column_num för att göra formeln mer mångsidig, vilket visas i skärmdumpen nedan:

    2. Få alla värden i en rad eller kolumn.

    Förutom att hämta en enskild cell kan INDEX-funktionen även returnera en matris av värden från hela raden eller . kolumn Om du vill hämta alla värden från en viss kolumn måste du utelämna argumentet row_num eller ställa in det på 0. Om du vill hämta hela raden måste du också lämna ett tomt värde eller 0 i column_num.

    Sådana INDEX-formler kan knappast användas ensamma, eftersom Excel inte kan placera den rad av värden som formeln returnerar i en enda cell och du skulle få felet #VALUE! i stället. Men om du använder INDEX tillsammans med andra funktioner, t.ex. SUM eller AVERAGE, kommer du att få fantastiska resultat.

    Du kan till exempel använda följande formel för att beräkna den genomsnittliga planetens temperatur i solsystemet:

    =MÅLVÄRDEN(INDEX(SourceData, , 4))

    I formeln ovan är argumentet column_num 4 eftersom Temperatur i den fjärde kolumnen i vår tabell. Parametern row_num utelämnas.

    På samma sätt kan du hitta de lägsta och högsta temperaturerna:

    =MAX(INDEX(SourceData, , 4))

    =MIN(INDEX(SourceData, , 4))

    Beräkna sedan den totala planetmassan (Mass är den andra kolumnen i tabellen):

    =SUMMA(INDEX(SourceData, , 2))

    Ur praktisk synvinkel är INDEX-funktionen i formeln ovan överflödig. Du kan helt enkelt skriva =MEDELvärde(intervall) eller . =SUMMA(intervall) och får samma resultat.

    När du arbetar med riktiga data kan den här funktionen vara användbar som en del av mer komplexa formler som du använder för dataanalys.

    3. Användning av INDEX med andra funktioner (SUM, AVERAGE, MAX, MIN)

    Utifrån de tidigare exemplen kanske du tror att en INDEX-formel returnerar värden, men i själva verket returnerar den en referens till cellen som innehåller värdet. Det här exemplet visar hur Excel-funktionen INDEX verkligen fungerar.

    Eftersom resultatet av en INDEX-formel är en referens kan vi använda den i andra funktioner för att göra en dynamiskt område Låter det förvirrande? Följande formel kommer att klargöra allt.

    Anta att du har en formel =GENOMSNITT(A1:A10) som returnerar ett medelvärde av värdena i cellerna A1:A10. I stället för att skriva intervallet direkt i formeln kan du ersätta antingen A1 eller A10, eller båda, med INDEX-funktioner, så här:

    =GENOMSNITT(A1 : INDEX(A1:A20,10))

    Båda ovanstående formler ger samma resultat eftersom INDEX-funktionen också returnerar en referens till cell A10 (row_num är satt till 10, col_num utelämnas). Skillnaden är att intervallet i formeln AVERAGE / INDEX är dynamiskt, och när du ändrar argumentet row_num i INDEX ändras intervallet som bearbetas av AVERAGE-funktionen och formeln ger ett annat resultat.

    INDEX-formelns väg verkar uppenbarligen alltför komplicerad, men den har praktiska tillämpningar, vilket visas i följande exempel.

    Exempel 1. Beräkna genomsnittet för de N första punkterna i listan.

    Låt oss säga att du vill veta den genomsnittliga diametern för de N största planeterna i vårt system. Du sorterar tabellen efter Diameter kolumnen från störst till minst och använd följande formel för medelvärde/index:

    =MÅLVÄRDEN(C5 : INDEX(SourceData[Diameter], B1))

    Exempel 2. Summera poster mellan de två angivna posterna.

    Om du vill definiera övre och nedre gräns i din formel behöver du bara använda två INDEX-funktioner för att återge det första och sista objektet du vill ha.

    Följande formel returnerar till exempel summan av värdena i Diameter kolumnen mellan de två objekt som anges i cellerna B1 och B2:

    =SUM(INDEX(SourceData[Diameter],B1) : INDEX(SourceData[Diameter], B2))

    4. INDEX-formeln för att skapa dynamiska intervall och rullgardinslistor.

    När du börjar organisera data i ett arbetsblad vet du ofta inte hur många poster du kommer att ha i slutändan. Det är inte fallet med vår planettabell, som verkar vara komplett, men vem vet?

    Hur som helst, om du har ett varierande antal objekt i en viss kolumn, till exempel från A1 till A n Om du vill skapa ett dynamiskt namngivet intervall som omfattar alla celler med data, vill du att intervallet ska justeras automatiskt när du lägger till nya poster eller tar bort några av de befintliga. Om du till exempel har 10 poster är ditt namngivna intervall A1:A10. Om du lägger till en ny post utökas det namngivna intervallet automatiskt till A1:A11, och om du ändrar dig och tar bort de nytillagda uppgifterna,återgår intervallet automatiskt till A1:A10.

    Den största fördelen med det här tillvägagångssättet är att du inte behöver uppdatera alla formler i arbetsboken för att se till att de hänvisar till rätt intervall.

    Ett sätt att definiera ett dynamiskt område är att använda Excel OFFSET-funktionen:

    =OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)

    En annan möjlig lösning är att använda Excel INDEX tillsammans med COUNTA:

    =Sheet_Name!$A$1:INDEX(Sheet_Name!$A:$A, COUNTA(Sheet_Name!$A:$A))

    I båda formlerna är A1 den cell som innehåller det första objektet i listan och det dynamiska intervallet som produceras av båda formlerna är identiskt.

    Skillnaden ligger i tillvägagångssätten. Medan OFFSET-funktionen flyttar sig från startpunkten med ett visst antal rader och/eller kolumner, hittar INDEX en cell i skärningspunkten mellan en viss rad och kolumn. COUNTA-funktionen, som används i båda formlerna, tar fram antalet icke-tomma celler i den aktuella kolumnen.

    I det här exemplet finns det 9 icke-tomma celler i kolumn A, så COUNTA returnerar 9. Följaktligen returnerar INDEX $A$9, vilket är den senast använda cellen i kolumn A (vanligtvis returnerar INDEX ett värde, men i den här formeln tvingar referensoperatorn (:) den att returnera en referens). Och eftersom $A$1 är vår utgångspunkt är slutresultatet av formeln intervallet $A$1:$A$9.

    Följande skärmdump visar hur du kan använda en sådan Indexformel för att skapa en dynamisk rullgardinslista.

    Tips: Det enklaste sättet att skapa en dynamiskt uppdaterad rullgardinslista är att göra en namngiven lista baserad på en tabell. I det här fallet behöver du inga komplexa formler eftersom Excel-tabeller i sig är dynamiska intervall.

    Du kan också använda INDEX-funktionen för att skapa beroende rullgardinslistor och följande handledning förklarar stegen: Skapa en rullgardinslista med kaskadindelning i Excel.

    5. Kraftfulla Vlookups med INDEX / MATCH

    Vertikala sökningar - det är här INDEX-funktionen verkligen briljerar. Om du någonsin har försökt använda Excel VLOOKUP-funktionen är du väl medveten om dess många begränsningar, t.ex. oförmåga att hämta värden från kolumnerna till vänster om sökningskolumnen eller 255 tecken som gräns för ett sökningsvärde.

    INDEX / MATCH-förbindelsen är överlägsen VLOOKUP i många avseenden:

    • Inga problem med vänstra vlookups.
    • Ingen begränsning av storleken på uppslagsvärdet.
    • Ingen sortering krävs (VLOOKUP med ungefärlig matchning kräver att kolumnen med uppslagsordningarna sorteras i stigande ordning).
    • Du kan lägga till och ta bort kolumner i en tabell utan att uppdatera alla tillhörande formler.
    • Sist men inte minst saktar INDEX / MATCH inte ner Excel som flera Vlookups gör.

    Du använder INDEX / MATCH på följande sätt:

    =INDEX ( kolumn för att returnera ett värde från , (MATCH ( Uppslagsvärde , kolumn att söka mot , 0))

    Om vi till exempel vänder på vår källtabell så att Planetens namn blir den högra kolumnen, hämtar INDEX/MATCH-formeln fortfarande ett matchande värde från den vänstra kolumnen utan problem.

    För fler tips och exempel på formler, se Excel INDEX / MATCH-handledningen.

    6. Excel INDEX-formeln för att få fram 1 intervall från en lista med intervall

    En annan smart och kraftfull användning av INDEX-funktionen i Excel är möjligheten att hämta ett intervall från en lista med intervall.

    Anta att du har flera listor med olika antal objekt i varje lista. Tro mig eller ej, du kan beräkna medelvärdet eller summera värdena i alla valda intervall med en enda formel.

    Först skapar du ett namngivet intervall för varje lista; låt det vara PlaneterD och MoonsD i det här exemplet:

    Jag hoppas att bilden ovan förklarar resonemanget bakom namnen på områdena. Månar tabellen är långt ifrån komplett, det finns 176 kända naturliga månar i vårt solsystem, bara Jupiter har för närvarande 63 stycken, och antalet ökar. För det här exemplet valde jag slumpmässigt ut 11, ja... kanske inte riktigt slumpmässiga - månar med de vackraste namnen : )

    Ursäkta mig för att jag avviker, men vi återgår till vår INDEX-formel. Om vi antar att PlaneterD är ditt intervall 1 och MoonsD är intervall 2 och cell B1 är den plats där du anger intervallnumret, kan du använda följande formel Index för att beräkna medelvärdet av värdena i det valda namngivna intervallet:

    =MÖJNING(INDEX((PlanetsD, MoonsD), , , , B1))

    Observera att vi nu använder referensformen av INDEX-funktionen, och att numret i det sista argumentet (area_num) talar om för formeln vilket område som ska väljas.

    I skärmdumpen nedan är area_num (cell B1) satt till 2, så formeln beräknar den genomsnittliga diametern för Månar eftersom intervallet MoonsD kommer på andra plats i referensargumentet.

    Om du arbetar med flera listor och inte vill komma ihåg de tillhörande numren kan du använda en inbäddad IF-funktion för att göra detta åt dig:

    =MÅLVÄRDEN(INDEX((PlanetsD, MoonsD), , , , IF(B1="planeter", 1, IF(B1="månar", 2))))

    I IF-funktionen använder du några enkla och lätt att komma ihåg listnamn som du vill att användarna ska skriva in i cell B1 i stället för siffror. Tänk på följande: för att formeln ska fungera korrekt måste texten i B1 vara exakt densamma (med undantag för stor bokstavsskillnad) som i IF:s parametrar, annars kommer din Index-formel att ge upphov till felet #VALUE.

    För att göra formeln ännu mer användarvänlig kan du använda datavalidering för att skapa en rullgardinslista med fördefinierade namn för att förhindra stavfel och felskrivningar:

    För att göra din INDEX-formel helt perfekt kan du slutligen inkludera den i funktionen IFERROR som uppmanar användaren att välja ett objekt från rullgardinslistan om inget val har gjorts ännu:

    =IFERROR(AVERAGE(INDEX((PlanetsD, MoonsD), , , IF(B1="planet", 1, IF(B1="måne", 2)))), "Välj listan!")

    Så här använder du INDEX-formler i Excel. Jag hoppas att dessa exempel har visat dig ett sätt att utnyttja INDEX-funktionens potential i dina kalkylblad. Tack för att du läste!

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.