Excel OFFSET-funktionen - exempel på formler och användningsområden

  • Dela Detta
Michael Brown

I den här handledningen ska vi kasta lite ljus över en av de mest mystiska invånarna i Excel-universumet - OFFSET-funktionen.

Vad är OFFSET i Excel? I ett nötskal returnerar formeln OFFSET en referens till ett intervall som är förskjutet från en startcell eller ett cellintervall med ett visst antal rader och kolumner.

OFFSET-funktionen kan vara lite knepig att förstå, så låt oss först gå igenom en kort teknisk förklaring (jag gör mitt bästa för att hålla det enkelt) och sedan kommer vi att täcka några av de mest effektiva sätten att använda OFFSET i Excel.

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

    Funktionen OFFSET i Excel returnerar en cell eller ett område av celler som ligger ett visst antal rader och kolumner från en viss cell eller ett visst område.

    Syntaxen för OFFSET-funktionen är följande:

    OFFSET(referens, rader, kolumner, [höjd], [bredd])

    De tre första argumenten är obligatoriska och de två sista är valfria. Alla argument kan vara referenser till andra celler eller resultat som returneras av andra formler.

    Det verkar som om Microsoft har ansträngt sig för att ge parameternamnen en mening och de ger en antydan om vad du ska ange i varje parameter.

    Krävda argument:

    • Referens - en cell eller ett område av angränsande celler som du utgår från förskjutningen. Du kan se det som en startpunkt.
    • Rader - Antalet rader som ska flyttas från startpunkten, uppåt eller nedåt. Om rows är ett positivt tal flyttas formeln under startreferensen, om det är ett negativt tal flyttas den över startreferensen.
    • Cols - Det antal kolumner du vill att formeln ska flytta sig från startpunkten. Förutom rader kan kolumner vara positiva (till höger om startreferensen) eller negativa (till vänster om startreferensen).

    Valfria argument:

    • Höjd - antalet rader som ska returneras.
    • Bredd - antalet kolumner som ska återges.

    Både höjd- och breddargumentet måste alltid vara positiva tal. Om något av argumenten utelämnas är standardvärdet höjden eller bredden för referens .

    Observera att OFFSET är en flyktig funktion som kan göra kalkylbladet långsammare. Långsamheten är direkt proportionell mot antalet celler som räknas om.

    Låt oss nu illustrera teorin med ett exempel på den enklaste OFFSET-formeln.

    Excel OFFSET-formel exempel

    Här är ett exempel på en enkel OFFSET-formel som returnerar en cellreferens baserat på en startpunkt, rader och kolumner som du anger:

    =OFFSET(A1,3,1)

    Formeln säger åt Excel att ta cell A1 som utgångspunkt (referens) och sedan flytta tre rader nedåt (argumentet rows) och en kolumn till vänster (argumentet cols). Som resultat returnerar denna OFFSET-formel värdet i cell B4.

    Bilden till vänster visar funktionens rutt och skärmdumpen till höger visar hur du kan använda formeln OFFSET på verkliga data. Den enda skillnaden mellan de två formlerna är att den andra (till höger) innehåller en cellreferens (E1) i argumentet rows. Men eftersom cell E1 innehåller siffran 3 visas exakt samma siffra i argumentet rows i den första formeln,båda skulle ge samma resultat - värdet i B4.

    Excel OFFSET-formler - saker att komma ihåg

    • OFFSET-funktionen i Excel flyttar inte några celler eller områden, utan returnerar bara en referens.
    • När en OFFSET-formel returnerar ett intervall av celler hänvisar argumenten rows och cols alltid till den övre vänstra cellen i det returnerade intervallet.
    • Referensargumentet måste innehålla en cell eller ett intervall av angränsande celler, annars returnerar formeln felet #VALUE!.
    • Om de angivna raderna och/eller kolumnerna flyttar en referens över kanten av kalkylbladet kommer Excel OFFSET-formeln att ge felet #REF!
    • OFFSET-funktionen kan användas i alla andra Excel-funktioner som accepterar en cell-/intervallreferens i sina argument.

    Om du till exempel försöker använda formeln =OFFSET(A1,3,1,1,3) på egen hand kommer den att ge ett #VALUE!-fel, eftersom det intervall som ska returneras (1 rad, 3 kolumner) inte ryms i en enda cell. Om du däremot bäddar in den i SUM-funktionen, så här:

    =SUMMA(OFFSET(A1,3,1,1,3))

    Formeln returnerar summan av värdena i ett intervall med 1 rad och 3 kolumner som ligger 3 rader under och 1 kolumn till höger om cell A1, dvs. summan av värdena i cellerna B4:D4.

    Varför använder jag OFFSET i Excel?

    Nu när du vet vad OFFSET-funktionen gör kanske du frågar dig själv "Varför använda den?" Varför inte bara skriva en direktreferens som B4:D4?

    Formeln OFFSET i Excel är mycket bra för:

    Skapa dynamiska områden : Referenser som B1:C4 är statiska, vilket innebär att de alltid hänvisar till ett visst intervall. Men vissa uppgifter är lättare att utföra med dynamiska intervall. Detta gäller särskilt när du arbetar med föränderliga data, t.ex. om du har ett kalkylblad där en ny rad eller kolumn läggs till varje vecka.

    Hämta intervallet från startcellen Ibland vet du kanske inte den faktiska adressen till området, men du vet att det börjar från en viss cell. I sådana fall är OFFSET i Excel rätt sätt att använda.

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

    Jag hoppas att du inte har blivit uttråkad av så mycket teori. Nu kommer vi i alla fall till den mest spännande delen - den praktiska användningen av OFFSET-funktionen.

    Excel OFFSET- och SUM-funktioner

    Exemplet som vi diskuterade för en stund sedan visar den enklaste användningen av OFFSET & SUM. Låt oss nu titta på dessa funktioner från en annan vinkel och se vad de kan göra mer.

    Exempel 1. En dynamisk formel för summa/avdragsformel

    När du arbetar med kontinuerligt uppdaterade kalkylblad kanske du vill ha en SUMM-formel som automatiskt plockar ut alla nytillkomna rader.

    Anta att du har källdata som liknar det du ser i skärmbilden nedan. Varje månad läggs en ny rad till precis ovanför SUM-formeln, och du vill naturligtvis att den ska ingå i totalen. Det finns två alternativ - antingen uppdaterar du intervallet i SUM-formeln manuellt varje gång eller så låter du OFFSET-formeln göra det åt dig.

    Eftersom den första cellen i intervallet som ska summeras anges direkt i SUM-formeln behöver du bara bestämma parametrarna för Excel OFFSET-funktionen, som hämtar den sista cellen i intervallet:

    • Referens - den cell som innehåller summan, B9 i vårt fall.
    • Rader - cellen precis ovanför summan, som kräver det negativa talet -1.
    • Cols - är 0 eftersom du inte vill ändra kolumnen.

    Så här går formeln SUM / OFFSET till:

    =SUMMA( första cellen :(OFFSET( cell med totalt , -1,0)

    För det ovanstående exemplet ser formeln ut på följande sätt:

    =SUMMA(B2:(OFFSET(B9, -1, 0)))

    Och som framgår av skärmdumpen nedan fungerar det perfekt:

    Exempel 2. Excel OFFSET-formel för att summera de sista N raderna

    I exemplet ovan antar vi att du vill veta summan av bonusar för de senaste N månaderna i stället för totalsumman. Du vill också att formeln automatiskt ska inkludera alla nya rader som du lägger till i arket.

    För den här uppgiften ska vi använda Excel OFFSET i kombination med funktionerna SUM och COUNT / COUNTA:

    =SUMMA(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    eller .

    =SUMMA(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))

    Följande uppgifter kan hjälpa dig att förstå formlerna bättre:

    • Referens - rubriken för den kolumn vars värden du vill summera, cell B1 i det här exemplet.
    • Rader - för att beräkna antalet rader som ska kompenseras använder du antingen funktionen COUNT eller COUNTA.

      COUNT returnerar antalet celler i kolumn B som innehåller siffror, från vilka du subtraherar de senaste N månaderna (siffran är cell E1) och lägger till 1.

      Om du väljer COUNTA som funktion behöver du inte lägga till 1, eftersom denna funktion räknar alla icke-tomma celler och en rubrikrad med ett textvärde lägger till en extra cell som vår formel behöver. Observera att den här formeln endast fungerar korrekt i en liknande tabellstruktur - en rubrikrad följt av rader med siffror. För andra tabelllayouter kan du behöva göra vissa justeringar iFormeln OFFSET/COUNTA.

    • Cols - antalet kolumner som ska förskjutas är noll (0).
    • Höjd - Antalet rader som ska summeras anges i E1.
    • Bredd - 1 kolumn.

    Användning av OFFSET-funktionen med AVERAGE, MAX, MIN

    På samma sätt som vi beräknade bonusarna för de senaste N månaderna kan du få fram ett medelvärde för de senaste N dagarna, veckorna eller åren samt hitta deras maximi- och minimivärden. Den enda skillnaden mellan formlerna är den första funktionens namn:

    = MEDELVÄRDE(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    =MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    =MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    Den viktigaste fördelen med dessa formler jämfört med de vanliga formlerna AVERAGE(B5:B8) eller MAX(B5:B8) är att du inte behöver uppdatera formeln varje gång källtabellen uppdateras. Oavsett hur många nya rader som läggs till eller tas bort i kalkylbladet kommer OFFSET-formlerna alltid att hänvisa till det angivna antalet sista (nedersta) celler i kolumnen.

    Excel OFFSET-formeln för att skapa ett dynamiskt intervall

    OFFSET-funktionen kan tillsammans med COUNTA hjälpa dig att skapa ett dynamiskt intervall som kan vara användbart i många scenarier, till exempel för att skapa automatiskt uppdaterbara rullgardinslistor.

    OFFSET-formeln för ett dynamiskt område är följande:

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

    I den här formeln använder du funktionen COUNTA för att få fram antalet celler som inte är tomma i målkolumnen. Detta antal går till OFFSET:s höjdargument för att ange hur många rader som ska returneras.

    I övrigt är det en vanlig Offset-formel, där:

    • Referens är den utgångspunkt som du baserar förskjutningen från, till exempel Sheet1!$A$1.
    • Rader och Cols är båda 0 eftersom det inte finns några kolumner eller rader att förskjuta.
    • Bredd är 1 kolumn.

    Observera: Om du skapar ett dynamiskt intervall i det aktuella arket behöver du inte ange arkets namn i referenserna, eftersom Excel gör det automatiskt när du skapar det namngivna intervallet. I annat fall måste du ange arkets namn följt av ett utropstecken, som i det här formelexemplet.

    När du har skapat ett dynamiskt namngivet intervall med formeln OFFSET ovan kan du använda datavalidering för att skapa en dynamisk rullgardinslista som uppdateras automatiskt så snart du lägger till eller tar bort objekt från källistan.

    För detaljerad vägledning steg för steg om hur du skapar rullgardinslistor i Excel kan du läsa följande handledningar:

    • Skapa rullgardinslistor i Excel - statiska, dynamiska, från en annan arbetsbok
    • Skapa en beroende rullgardinslista

    Excel OFFSET & VLOOKUP

    Som alla vet utförs enkla vertikala och horisontella sökningar med funktionerna VLOOKUP respektive HLOOKUP. Dessa funktioner har dock för många begränsningar och stannar ofta upp i mer kraftfulla och komplexa sökformler. Så för att utföra mer sofistikerade sökningar i dina Excel-tabeller måste du leta efter alternativ som INDEX, MATCH och OFFSET.

    Exempel 1. OFFSET-formel för en vänster Vlookup i Excel

    En av de mest ökända begränsningarna för VLOOKUP-funktionen är att den inte kan titta till vänster, vilket innebär att VLOOKUP endast kan returnera ett värde till höger om kolumnen för uppslaget.

    I vårt exempel på uppslagstabell finns det två kolumner - månadsnamn (kolumn A) och bonusar (kolumn B). Om du vill få fram en bonus för en viss månad fungerar den här enkla VLOOKUP-formeln utan problem:

    =VLOOKUP(B1, A5:B11, 2, FALSE)

    Så snart du byter ut kolumnerna i uppslagstabellen kommer detta dock omedelbart att resultera i felet #N/A:

    För att hantera en vänsteruppslagsfunktion behöver du en mer mångsidig funktion som inte bryr sig om var returkolumnen finns. En av de möjliga lösningarna är att använda en kombination av INDEX- och MATCH-funktionerna. En annan lösning är att använda OFFSET, MATCH och ROWS:

    OFFSET( Lookup_table , MATCH( Lookup_value , OFFSET( Lookup_table , 0, lookup_col_offset , ROWS( lookup_table ), 1) ,0) -1, return_col_offset , 1, 1)

    Var:

    • Lookup_col_offset - är antalet kolumner som ska flyttas från startpunkten till uppslagskolumnen.
    • Retur_col_offset - är antalet kolumner som ska flyttas från startpunkten till den återvändande kolumnen.

    I vårt exempel är uppslagstabellen A5:B9 och uppslagsvärdet finns i cell B1, förskjutningen av uppslagskolumnen är 1 (eftersom vi söker efter uppslagsvärdet i den andra kolumnen (B) måste vi flytta en kolumn till höger från tabellens början), förskjutningen av returkolumnen är 0 eftersom vi returnerar värden från den första kolumnen (A):

    =OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1, 1)

    Jag vet att formeln ser lite klumpig ut, men den fungerar :)

    Exempel 2. Hur man gör en övre sökning i Excel

    Precis som VLOOKUP inte kan titta till vänster kan dess horisontella motsvarighet - HLOOKUP-funktionen - inte titta uppåt för att returnera ett värde.

    Om du behöver söka igenom en övre rad efter matchningar kan formeln OFFSET MATCH hjälpa dig igen, men den här gången måste du förbättra den med funktionen COLUMNS, så här:

    OFFSET( Lookup_table , return_row_offset , MATCH( Lookup_value , OFFSET( Lookup_table , lookup_row_offset , 0, 1, KOLUMNER( Lookup_table )), 0) -1, 1, 1)

    Var:

    • Lookup_row_offset - antalet rader som ska flyttas från startpunkten till den sökta raden.
    • Return_row_offset - antalet rader som ska flyttas från startpunkten till den återvändande raden.

    Om vi antar att uppslagstabellen är B4:F5 och att uppslagsvärdet finns i cell B1, så ser formeln ut på följande sätt:

    =OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1, 1)

    I vårt fall är förskjutningen av uppslagsraden 1 eftersom vårt uppslagsintervall är 1 rad nedåt från startpunkten, och förskjutningen av returraden är 0 eftersom vi returnerar matchningar från den första raden i tabellen.

    Exempel 3. Dubbel sökning (genom kolumn- och radvärden)

    Dubbeluppslag returnerar ett värde baserat på matchningar i både rader och kolumner. Du kan använda följande formel för dubbeluppslagsarray för att hitta ett värde i skärningspunkten mellan en viss rad och kolumn:

    =OFFSET( uppslagsbord. , MATCH( värde för raduppslag , OFFSET( uppslagsbord. , 0, 0, ROWS( Uppslagsbord. ), 1), 0) -1, MATCH( kolumnuppslagsvärde , OFFSET( Uppslagsbord. , 0, 0, 0, 1, KOLUMNER( uppslagsbord )), 0) -1)

    Med tanke på detta:

    • Uppslagstabellen är A5:G9
    • Det värde som ska matchas på raderna står i B2
    • Det värde som ska matchas i kolumnerna finns i B1

    Du får följande tvådimensionella uppslagsformel:

    =OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, ROWS(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 0, 1, COLUMNS(A5:G9)), 0) -1)

    Det är inte det lättaste att komma ihåg, eller hur? Dessutom är detta en arrayformel, så glöm inte att trycka på Ctrl + Shift + Enter för att skriva in den korrekt.

    Naturligtvis är denna långa OFFSET-formel inte det enda möjliga sättet att göra en dubbel sökning i Excel. Du kan få samma resultat genom att använda funktionerna VLOOKUP &; MATCH, SUMPRODUCT eller INDEX &; MATCH. Det finns även ett formelfritt sätt - att använda namngivna områden och skärningsoperatorn (mellanslag). Följande handledning förklarar alla alternativa lösningar i detalj: Hur man gör tvåvägssökning i Excel.

    OFFSET-funktionen - begränsningar och alternativ

    Förhoppningsvis har formelexemplen på den här sidan kastat lite ljus över hur du använder OFFSET i Excel. Men för att effektivt utnyttja funktionen i dina egna arbetsböcker bör du inte bara känna till dess styrkor utan också vara försiktig med dess svagheter.

    De mest kritiska begränsningarna med Excel OFFSET-funktionen är följande:

    • Liksom andra flyktiga funktioner är OFFSET en Resurskrävande funktion. När källdata ändras räknas OFFSET-formlerna om, vilket gör att Excel är upptagen lite längre. Detta är inget problem för en enda formel i ett litet kalkylblad. Men om det finns dussintals eller hundratals formler i en arbetsbok kan Microsoft Excel ta en hel del tid på sig att räkna om.
    • Excel OFFSET-formlerna är svårt att granska Eftersom referenser som returneras av OFFSET-funktionen är dynamiska kan stora formler (särskilt med inbäddade OFFSET:er) vara svåra att felsöka.

    Alternativ till att använda OFFSET i Excel

    Som ofta är fallet i Excel kan samma resultat uppnås på flera olika sätt, så här är tre eleganta alternativ till OFFSET.

    1. Excel-tabeller

      Sedan Excel 2002 har vi en verkligt fantastisk funktion - fullfjädrade Excel-tabeller, i motsats till vanliga intervall. För att skapa en tabell från strukturerade data klickar du helt enkelt på Infoga> Tabell på den Hem eller tryck på Ctrl + T .

      Genom att ange en formel i en cell i en Excel-tabell kan du skapa en så kallad "beräknad kolumn" som automatiskt kopierar formeln till alla andra celler i kolumnen och justerar formeln för varje rad i tabellen.

      Dessutom justeras alla formler som hänvisar till tabellens data automatiskt för att inkludera nya rader som du lägger till i tabellen eller utesluta de rader som du tar bort. Tekniskt sett fungerar sådana formler på tabellens kolumner eller rader, som är dynamiska områden Varje tabell i en arbetsbok har ett unikt namn (standardnamnen är Table1, Table2 osv.) och du kan fritt byta namn på din tabell med hjälp av Design flik> Egenskaper grupp> Tabellens namn textruta.

      Följande skärmdump visar SUM-formeln som hänvisar till Bonus kolumnen i tabell 3. Var uppmärksam på att formeln inkluderar tabellens kolumnnamn i stället för ett antal celler.

    2. Excel INDEX-funktionen

      Även om det inte är exakt på samma sätt som OFFSET kan Excel INDEX också användas för att skapa dynamiska intervallreferenser. Till skillnad från OFFSET är INDEX-funktionen inte flyktig, så den kommer inte att sakta ner Excel.

    3. Excel INDIRECT-funktionen

      Med INDIRECT-funktionen kan du skapa dynamiska intervallreferenser från många källor, t.ex. cellvärden, cellvärden och text, namngivna intervall. Den kan också dynamiskt hänvisa till ett annat Excel-ark eller en annan arbetsbok. Du hittar alla dessa formelexempel i vår handledning om Excel INDIRECT-funktionen.

    Minns du frågan som ställdes i början av denna handledning? Vad är OFFSET i Excel? Jag hoppas att du nu vet svaret : ) Om du vill ha mer praktisk erfarenhet kan du ladda ner vår arbetsbok (se nedan) som innehåller alla formler som diskuteras på den här sidan och göra en reverse engineer av dem för att få en djupare förståelse. Tack för att du läste!

    Arbetsbok för övning för nedladdning

    Exempel på OFFSET-formler (.xlsx-fil)

    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.