Excel INDIRECT-funktionen - grundläggande användningsområden och exempel på formler

  • Dela Detta
Michael Brown

Den här Excel INDIRECT-handledningen förklarar funktionens syntax, grundläggande användningsområden och ger ett antal formelexempel som visar hur man använder INDIRECT i Excel.

Det finns många funktioner i Microsoft Excel, vissa är lätta att förstå, andra kräver en lång inlärningskurva och de förra används oftare än de senare. Ändå är Excel INDIRECT en av dem. Den här Excel-funktionen utför inga beräkningar och utvärderar inte heller några villkor eller logiska tester.

Vad är INDIRECT-funktionen i Excel och vad använder jag den till? Detta är en mycket bra fråga och förhoppningsvis får du ett uttömmande svar om några minuter när du har läst klart den här handledningen.

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

    Som namnet antyder används Excel INDIRECT för att indirekt hänvisa till celler, intervall, andra ark eller arbetsböcker. Med andra ord kan du med INDIRECT-funktionen skapa en dynamisk cell- eller intervallreferens i stället för att hårdkoda dem. Som ett resultat kan du ändra en referens i en formel utan att ändra själva formeln. Dessutom kommer dessa indirekta referenser inte att ändras när några nya rader eller kolumnerläggs in i arbetsbladet eller när du tar bort befintliga.

    Allt detta kan vara lättare att förstå med hjälp av ett exempel. Men för att kunna skriva en formel, även den enklaste, måste du känna till funktionens argument, eller hur? Så låt oss först ta en snabb titt på Excel INDIRECT-syntaxen.

    Syntax för INDIRECT-funktionen

    Funktionen INDIRECT i Excel returnerar en cellreferens från en textsträng. Den har två argument, det första är obligatoriskt och det andra är valfritt:

    INDIRECT(ref_text, [a1])

    ref_text - är en cellreferens, en referens till en cell i form av en textsträng eller ett namngivet intervall.

    a1 - är ett logiskt värde som anger vilken typ av referens som finns i ref_text-argumentet:

    • Om ref_text är TRUE eller utelämnas, tolkas ref_text som en A1-cellreferens.
    • Om FALSE behandlas ref_text som en R1C1-referens.

    Även om referenstypen R1C1 kan vara användbar i vissa situationer, vill du förmodligen använda de välkända A1-referenserna för det mesta. Nästan alla INDIRECT-formler i den här handledningen kommer att använda A1-referenser, så vi kommer att utelämna det andra argumentet.

    Grundläggande användning av INDIRECT-funktionen

    För att få en inblick i funktionen skriver vi en enkel formel som visar hur du använder INDIRECT i Excel.

    Antag att du har nummer 3 i cell A1 och text A1 i cell C1. Sätt nu in formeln =INDIRECT(C1) i någon annan cell och se vad som händer:

    • Funktionen INDIRECT hänvisar till värdet i cell C1, som är A1.
    • Funktionen skickas till cell A1 där den väljer det värde som ska returneras, vilket är nummer 3.

    Så vad INDIRECT-funktionen faktiskt gör i det här exemplet är följande konvertera en textsträng till en cellreferens .

    Om du tycker att det här fortfarande inte är särskilt meningsfullt i praktiken, så har du tålamod med mig så ska jag visa dig några fler formler som avslöjar den verkliga kraften i Excel-funktionen INDIRECT.

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

    Som framgår av exemplet ovan kan du använda Excel-funktionen INDIRECT för att lägga adressen till en cell i en annan som en vanlig textsträng och få fram värdet i den första cellen genom att hänvisa till den andra. Det triviala exemplet är dock bara en antydan om INDIRECT-funktionen.

    När du arbetar med riktiga data kan INDIRECT-funktionen förvandla vilken textsträng som helst till en referens, inklusive mycket komplexa strängar som du bygger upp med hjälp av värdena i andra celler och resultat som returneras av andra Excel-formler. Men låt oss inte sätta vagnen före hästen och gå igenom flera Excel Indirect-formler, en i taget.

    Skapa indirekta referenser från cellvärden

    Som du minns tillåter Excel-funktionen INDIRECT A1 och R1C1 referensstilar. Vanligtvis kan du inte använda båda stilarna i ett enskilt ark åt gången, du kan bara växla mellan de två referenstyperna via Fil> Alternativ> Formler > Kryssrutan R1C1 Detta är anledningen till att Excel-användare sällan överväger att använda R1C1 som en alternativ referensmetod.

    I en INDIRECT-formel kan du använda båda referenstyperna på samma ark om du vill. Innan vi går vidare vill du kanske veta skillnaden mellan A1- och R1C1-referensstilarna.

    A1-stil är den vanliga referenstypen i Excel som hänvisar till en kolumn följt av ett radnummer. Till exempel hänvisar B2 till cellen i skärningspunkten mellan kolumn B och rad 2.

    R1C1 stil är den motsatta referenstypen - rader följt av kolumner, vilket det tar lite tid att vänja sig vid : ) Till exempel hänvisar R4C1 till cell A4 som ligger i rad 4, kolumn 1 i ett ark. Om ingen siffra kommer efter bokstaven hänvisar du till samma rad eller kolumn.

    Nu ska vi se hur INDIRECT-funktionen hanterar A1- och R1C1-referenser:

    Som du ser i skärmbilden ovan ger tre olika indirekta formler samma resultat. Har du redan kommit på varför? Det tror jag säkert : )

    • Formel i cell D1: =INDIRECT(C1)

    Detta är den enklaste: Formeln hänvisar till cell C1 och hämtar dess värde - textsträng. A2 , omvandlar den till en cellreferens, går till cell A2 och returnerar dess värde, som är 222.

    • Formel i cell D3: =INDIRECT(C3,FALSE)

    FALSE i det andra argumentet anger att det refererade värdet (C3) ska behandlas som en R1C1-cellreferens, dvs. ett radnummer följt av ett kolumnnummer. Därför tolkar vår INDIRECT-formel värdet i cell C3 (R2C1) som en referens till cellen vid sammanfogningen av rad 2 och kolumn 1, dvs. cell A2.

    Skapa indirekta referenser från cellvärden och text

    På samma sätt som vi skapade referenser från cellvärden kan du kombinera en textsträng och en cellreferens i din INDIRECT-formel, som du binder samman med sammanlänkningsoperatorn (&).

    I följande exempel returnerar formeln: =INDIRECT("B"&C2) ett värde från cell B2 baserat på följande logiska kedja:

    Funktionen INDIRECT sammanfogar elementen i ref_text-argumentet - text B och värdet i cell C2 -> värdet i cell C2 är nummer 2, vilket ger en referens till cell B2 -> formeln går till cell B2 och returnerar dess värde, som är nummer 10.

    Använda INDIRECT-funktionen med namngivna intervall

    Förutom att göra referenser från cell- och textvärden kan du använda Excel-funktionen INDIRECT för att hänvisa till namngivna områden .

    Antag att du har följande namngivna intervall i ditt ark:

    • Äpplen - B2:B6
    • Bananer - C2:C6
    • Citroner - D2:D6

    Om du vill skapa en dynamisk Excel-referens till något av de ovan nämnda områdena anger du bara namnet i en cell, till exempel G1, och hänvisar till den cellen med en Indirekt formel. =INDIRECT(G1) .

    Och nu kan du ta ett steg längre och bädda in den här INDIRECT-formeln i andra Excel-funktioner för att beräkna summan och genomsnittet av värdena i ett givet namngivet intervall, eller för att hitta det maximala/minsta värdet inom intervallet:

    • =SUMMA(INDIREKT(G1))
    • =GENOMSNITT(INDIREKT(G1))
    • =MAX(INDIREKT(G1))
    • =MIN(INDIREKT(G1))

    Nu när du har fått en allmän uppfattning om hur du använder INDIRECT-funktionen i Excel kan vi experimentera med mer kraftfulla formler.

    INDIRECT-formel för att dynamiskt hänvisa till ett annat arbetsblad

    Nyttan med Excel-funktionen INDIRECT är inte begränsad till att skapa "dynamiska" cellreferenser. Du kan också använda den för att hänvisa till celler i andra kalkylblad "i farten", och så här gör du.

    Anta att du har viktiga data i ark 1 och vill hämta dessa data i ark 2. Följande skärmdump visar hur en Excel Indirect-formel kan hantera denna uppgift:

    Låt oss dela upp formeln som du ser i skärmbilden för att förstå.

    Som du vet är det vanliga sättet att referera till ett annat ark i Excel att skriva arkets namn följt av ett utropstecken och en cell-/intervallreferens, som till exempel SheetName!Range Eftersom ett arknamn ofta innehåller ett eller flera mellanslag är det bättre att omsluta det (namnet, inte mellanslaget : ) i enkla citattecken för att undvika fel, till exempel "Mitt blad!"$A$1 .

    Nu behöver du bara skriva in arknamnet i en cell och celladressen i en annan, sammanfoga dem till en textsträng och skicka strängen till funktionen INDIRECT. Kom ihåg att du i en textsträng måste omsluta varje element som inte är en celladress eller ett cellnummer med dubbla citationstecken och länka samman alla element med hjälp av sammanfogningsoperatorn (&).

    Med tanke på ovanstående får vi följande mönster:

    INDIRECT("'" & Bladets namn & "'!" & Cell att hämta data från )

    Om vi återgår till vårt exempel skriver du arkets namn i cell A1 och anger celladresserna i kolumn B, vilket visas i skärmdumpen ovan. Resultatet blir följande formel:

    INDIRECT("'" & $A$1 & "'!" & B1)

    Observera också att om du kopierar formeln till flera celler måste du låsa referensen till arkets namn med hjälp av absoluta cellreferenser som $A$1.

    Anteckningar

    • Om någon av cellerna som innehåller det andra arkets namn och celladress (A1 och B1 i formeln ovan) är tom kommer din Indirekt-formel att returnera ett fel. För att förhindra detta kan du linda in INDIRECT-funktionen i IF-funktionen:

      IF(OR($A$1="",B1=""), "", INDIRECT("'" & $A$1 & "'!" & B1))

    • För att formeln INDIRECT som hänvisar till ett annat ark ska fungera korrekt måste det ark som det hänvisas till vara öppet, annars returnerar formeln ett #REF-fel. För att undvika felet kan du använda funktionen IFERROR, som visar en tom sträng, oavsett vilket fel som uppstår:

      IFERROR(INDIRECT("'" & $A$1 & "'!" &B1), "")

    Skapa en dynamisk Excel-referens till en annan arbetsbok

    Den indirekta formeln som hänvisar till en annan Excel-arbetsbok bygger på samma tillvägagångssätt som en hänvisning till ett annat kalkylblad. Du behöver bara ange arbetsbokens namn utöver arknamnet och celladressen.

    För att göra det enklare börjar vi med att göra en hänvisning till en annan bok på vanligt sätt (apostrofer läggs till om bok- och/eller bladnamnen innehåller mellanslag):

    '[Book_name.xlsx]Sheet_name'!Range

    Om vi antar att bokens namn finns i cell A2, arkets namn i B2 och celladressen i C2 får vi följande formel:

    =INDIRECT("'[" & $A$2 & "]" & $B$2 & "'!" & C2)

    Eftersom du inte vill att cellerna med bokens och arkets namn ska ändras när du kopierar formeln till andra celler, låser du dem genom att använda absoluta cellreferenser, $A$2 respektive $B$2.

    Nu kan du enkelt skriva din egen dynamiska referens till en annan Excel-arbetsbok genom att använda följande mönster:

    =INDIRECT("''[" & Bokens namn & "]" & Namn på bladet & "'!" & Celladress )

    Observera: Arbetsboken som formeln hänvisar till ska alltid vara öppen, annars kommer INDIRECT-funktionen att ge ett #REF-fel. Som vanligt kan IFERROR-funktionen hjälpa dig att undvika det:

    =IFERROR(INDIRECT("'[" & A2 & "]" & $A$1 & "'!" & B1), "")

    Använda Excel INDIRECT-funktionen för att låsa en cellreferens

    Normalt ändrar Microsoft Excel cellreferenser när du infogar nya eller tar bort befintliga rader eller kolumner i ett ark. För att förhindra detta kan du använda funktionen INDIRECT för att arbeta med cellreferenser som i vilket fall som helst ska förbli intakta.

    För att illustrera skillnaden kan du göra följande:

    1. Ange ett valfritt värde i en valfri cell, till exempel nummer 20 i cell A1.
    2. Hänvisa till A1 från två andra celler på olika sätt: =A1 och =INDIRECT("A1")
    3. Infoga en ny rad ovanför rad 1.

    Ser du vad som händer? cellen med är lika med ger fortfarande 20, eftersom formeln automatiskt har ändrats till =A2. Cellen med formeln INDIRECT ger nu 0, eftersom formeln inte ändrades när en ny rad infogades och den fortfarande hänvisar till cell A1, som för närvarande är tom:

    Efter den här demonstrationen kanske du har fått intrycket att INDIRECT-funktionen är mer besvärlig än nyttig. Okej, låt oss prova på ett annat sätt.

    Om du vill summera värdena i cellerna A2:A5 kan du enkelt göra det med hjälp av funktionen SUM:

    =SUMMA(A2:A5)

    Du vill dock att formeln ska förbli oförändrad, oavsett hur många rader som tas bort eller infogas. Den mest uppenbara lösningen - att använda absoluta referenser - hjälper inte. För att vara säker på det, skriv in formeln =SUM($A$2:$A$5) i en cell, infoga en ny rad, till exempel på rad 3, och... hitta formeln omvandlad till =SUM($A$2:$A$6) .

    Naturligtvis fungerar en sådan artighet av Microsoft Excel bra i de flesta fall. Det kan dock finnas scenarier när du inte vill att formeln ska ändras automatiskt. Lösningen är att använda INDIRECT-funktionen, så här:

    =SUM(INDIREKT("A2:A5"))

    Eftersom Excel uppfattar "A1:A5" som en ren textsträng och inte som en intervallreferens, görs inga ändringar när du infogar eller tar bort en eller flera rader.

    Använda INDIRECT med andra Excel-funktioner

    Förutom SUMM används INDIRECT ofta tillsammans med andra Excel-funktioner som ROW, COLUMN, ADDRESS, VLOOKUP, SUMIF, för att nämna några.

    Exempel 1. Funktionerna INDIRECT och ROW

    Ofta används ROW-funktionen i Excel för att returnera en matris av värden. Du kan till exempel använda följande matrisformel (kom ihåg att du måste trycka på Ctrl + Shift + Enter ) för att returnera medelvärdet av de tre minsta siffrorna i intervallet A1:A10:

    = MEDELVÄRDE(SMALL(A1:A10,ROW(1:3)))

    Men om du infogar en ny rad i arbetsbladet, någonstans mellan rad 1 och 3, ändras intervallet i ROW-funktionen till ROW(1:4) och formeln returnerar medelvärdet av de fyra minsta siffrorna i stället för tre.

    För att förhindra att detta händer kan du använda INDIRECT i ROW-funktionen, så att formeln för din matris alltid förblir korrekt, oavsett hur många rader som läggs in eller tas bort:

    = MEDELVÄRDE(SMALL(A1:A10,ROW(INDIREKT("1:3"))))

    Här är ytterligare några exempel på hur du använder INDIRECT och ROW tillsammans med funktionen LARGE: Hur summerar man N största tal i ett intervall?

    Exempel 2. Funktionerna INDIRECT och ADDRESS

    Du kan använda Excel INDIRECT tillsammans med ADDRESS-funktionen för att snabbt få fram ett värde i en viss cell.

    Som du kanske minns används ADDRESS-funktionen i Excel för att få fram en celladress med hjälp av rad- och kolumnnummer. Till exempel, formeln =ADRESS(1,3) returnerar strängen $C$1 eftersom C1 är cellen i skärningspunkten mellan första raden och tredje kolumnen.

    För att skapa en indirekt cellreferens bäddar du helt enkelt in ADDRESS-funktionen i en INDIRECT-formel på följande sätt:

    =INDIREKT(ADRESS(1,3))

    Den här triviala formeln är naturligtvis bara en demonstration av tekniken, och här är några exempel som kan visa sig vara mycket användbara:

    • Formeln INDIRECT ADDRESS - hur du byter rader och kolumner.
    • VLOOKUP och INDIRECT - hur du dynamiskt hämtar data från olika ark.
    • INDIRECT med INDEX / MATCH - hur du gör en VLOOKUP-formel som är känslig för stora bokstäver perfekt.
    • Excel INDIRECT och COUNTIF - hur du använder COUNTIF-funktionen på ett icke sammanhängande område eller ett urval av celler.

    Använda INDIRECT med datavalidering i Excel

    Du kan använda Excel-funktionen INDIRECT med datavalidering för att skapa kaskadlistor som visar olika alternativ beroende på vilket värde användaren valt i den första rullgardinsmenyn.

    En enkel beroende rullgardinslista är mycket enkel att göra. Allt som behövs är några namngivna områden för att lagra rullgardinslistans objekt och en enkel =INDIRECT(A2) där A2 är den cell som visar den första rullgardinslistan.

    Om du vill skapa mer komplexa trenivåmenyer eller rullgardinsmenyer med poster med flera ord behöver du en lite mer komplex INDIRECT-formel med en inbäddad SUBSTITUTE-funktion.

    För detaljerad steg-för-steg-vägledning om hur du använder INDIRECT med Excel-datavalidering kan du läsa den här handledningen: Hur man gör en beroende rullgardinslista i Excel.

    Excel INDIRECT-funktionen - möjliga fel och problem

    Som framgår av exemplen ovan är INDIRECT-funktionen mycket användbar när man hanterar cell- och intervallreferenser. Det är dock inte alla Excel-användare som är ivriga att använda den, främst på grund av att en omfattande användning av INDIRECT i Excel-formler leder till bristande transparens. INDIRECT-funktionen är svår att granska eftersom cellen som den hänvisar till inte är den slutgiltiga platsen för det värde som används i formeln,vilket är ganska förvirrande, särskilt när man arbetar med stora komplexa formler.

    Utöver ovanstående kan INDIRECT, precis som alla andra Excel-funktioner, ge upphov till ett fel om du missbrukar funktionens argument. Här är en lista över de vanligaste misstagen:

    Excel INDIRECT #REF! fel

    Oftast returnerar INDIRECT-funktionen ett #REF!-fel i tre fall:

    1. ref_text är inte en giltig cellreferens Om ref_text-parametern i din Indirect-formel inte är en giltig cellreferens kommer formeln att resultera i felvärdet #REF! För att undvika eventuella problem bör du kontrollera INDIRECT-funktionens argument.
    2. Gränsen för intervallet har överskridits Om ref_text-argumentet i din Indirect-formel hänvisar till ett cellområde som överskrider radgränsen på 1 048 576 eller kolumngränsen på 16 384 får du också felet #REF i Excel 2007, 2010 och Excel 2013. Tidigare Excel-versioner ignorerar att gränsen har överskridits och returnerar ett visst värde, men ofta inte det värde du förväntar dig.
    3. Det ark eller den arbetsbok som det hänvisas till är stängd. Om din Indirect-formel hänvisar till en annan Excel-arbetsbok eller ett annat kalkylblad måste den andra arbetsboken/det andra kalkylbladet vara öppet, annars returnerar INDIRECT felet #REF!

    Fel i Excel INDIRECT #NAME?

    Detta är det mest uppenbara fallet, vilket innebär att det finns något fel i funktionens namn, vilket leder oss till nästa punkt : )

    Använda INDIRECT-funktionen i andra språkversioner än engelska

    Du kanske är nyfiken på att det engelska namnet på INDIRECT-funktionen har översatts till 14 språk, bland annat:

    • Danska - INDIREKTE
    • Finska - EPÄSUORA
    • Tyska - INDIREKT
    • Ungerska - INDIREKT
    • Italienska - INDIRETTO
    • Norska - INDIREKTE
    • Polska - ADR.POŚR
    • Spanska - INDIRECTO
    • Svenska - INDIREKT
    • Turkiska - DOLAYLI

    Om du är intresserad av att få en fullständig lista kan du gå in på den här sidan.

    Ett vanligt problem med icke-engelska lokaliseringar är inte INDIRECT-funktionens namn, utan snarare olika Regionala inställningar för Separator för listor . I standardkonfigurationen av Windows för Nordamerika och vissa andra länder är standardinställningen Separator för listor är ett kommatecken. I de europeiska länderna är kommatecknet reserverat för Decimalsymbol och Separator för listor är satt till semikolon.

    När du kopierar en formel mellan två olika Excel-skalor kan du därför få felmeddelandet " Vi har upptäckt ett problem med denna formel... " eftersom den Separator i listan Om du stöter på detta fel när du kopierar en INDIRECT-formel från den här handledningen till Excel, byt helt enkelt ut alla kommatecken (,) mot semikolon (;) för att rätta till det.

    För att kontrollera vilken listseparator och decimalsymbol som är inställd på din maskin öppnar du Kontrollpanel , och gå till Region och språk> Ytterligare inställningar .

    Förhoppningsvis har den här handledningen kastat lite ljus över hur du använder INDIRECT i Excel. Nu när du känner till dess styrkor och begränsningar är det dags att prova och se hur INDIRECT-funktionen kan förenkla dina Excel-uppgifter. 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.