Excel OFFSET functie - formule voorbeelden en gebruik

  • Deel Dit
Michael Brown

In deze handleiding gaan we wat licht werpen op een van de meest mysterieuze bewoners van het Excel-universum - de OFFSET-functie.

Wat is OFFSET in Excel? In een notendop geeft de OFFSET-formule een verwijzing naar een bereik dat is verschoven van een startcel of een cellenbereik met een opgegeven aantal rijen en kolommen.

De OFFSET-functie kan een beetje lastig zijn, dus laten we eerst een korte technische uitleg geven (ik zal mijn best doen om het eenvoudig te houden) en daarna behandelen we een paar van de meest efficiënte manieren om OFFSET in Excel te gebruiken.

    Excel OFFSET functie - syntaxis en basisgebruik

    De functie OFFSET in Excel geeft een cel of celbereik terug dat een bepaald aantal rijen en kolommen verwijderd is van een gegeven cel of bereik.

    De syntaxis van de OFFSET-functie is als volgt:

    OFFSET(referentie, rijen, kolommen, [hoogte], [breedte])

    De eerste 3 argumenten zijn vereist en de laatste 2 zijn optioneel. Alle argumenten kunnen verwijzingen zijn naar andere cellen of resultaten die door andere formules worden geretourneerd.

    Het lijkt erop dat Microsoft een goede poging heeft gedaan om enige betekenis te geven aan de namen van de parameters, en ze geven een hint over wat je in elke parameter moet specificeren.

    Vereiste argumenten:

    • Referentie - een cel of een bereik van aangrenzende cellen waarop u de offset baseert. U kunt het zien als het startpunt.
    • Rijen - Het aantal rijen dat vanaf het beginpunt omhoog of omlaag moet worden verplaatst. Als rijen een positief getal is, gaat de formule onder de startreferentie, bij een negatief getal boven de startreferentie.
    • Cols - Het aantal kolommen dat de formule moet verplaatsen vanaf het beginpunt. Behalve rijen kunnen ook kolommen positief (rechts van de beginreferentie) of negatief (links van de beginreferentie) zijn.

    Optionele argumenten:

    • Hoogte - het aantal te retourneren rijen.
    • Breedte - het aantal te retourneren kolommen.

    De argumenten hoogte en breedte moeten altijd positieve getallen zijn. Als een van beide wordt weggelaten, wordt standaard de hoogte of breedte van referentie .

    Opmerking: OFFSET is een vluchtige functie en kan uw werkblad vertragen. De traagheid is recht evenredig met het aantal cellen dat opnieuw wordt berekend.

    En laten we nu de theorie illustreren met een voorbeeld van de eenvoudigste OFFSET-formule.

    Excel OFFSET formule voorbeeld

    Hier volgt een voorbeeld van een eenvoudige OFFSET-formule die een celverwijzing oplevert op basis van een beginpunt, rijen en kolommen die u opgeeft:

    =OFFSET(A1,3,1)

    De formule vertelt Excel om cel A1 als uitgangspunt te nemen (referentie), en vervolgens 3 rijen naar beneden te gaan (argument rijen) en 1 kolom naar links (argument kolommen). Als resultaat geeft deze OFFSET-formule de waarde in cel B4.

    De afbeelding links toont de route van de functie en de schermafbeelding rechts toont hoe u de OFFSET-formule kunt gebruiken op echte gegevens. Het enige verschil tussen de twee formules is dat de tweede (rechts) een celverwijzing (E1) bevat in het argument rijen. Maar aangezien cel E1 het getal 3 bevat, verschijnt precies hetzelfde getal in het argument rijen van de eerste formule,beide zouden een identiek resultaat opleveren - de waarde in B4.

    Excel OFFSET formules - dingen om te onthouden

    • De OFFSET-functie in Excel verplaatst geen cellen of bereiken, maar geeft alleen een verwijzing terug.
    • Wanneer een OFFSET-formule een reeks cellen retourneert, verwijzen de argumenten rijen en kolommen altijd naar de cel linksboven in de geretourneerde reeks.
    • Het referentieargument moet een cel of een bereik van aangrenzende cellen bevatten, anders geeft uw formule de foutmelding #WAARDE!
    • Indien de opgegeven rijen en/of kolommen een referentie over de rand van de spreadsheet verplaatsen, geeft uw Excel OFFSET-formule de foutmelding #REF!
    • De OFFSET-functie kan worden gebruikt binnen elke andere Excel-functie die een cel/bereikverwijzing in de argumenten accepteert.

    Als u bijvoorbeeld de formule =OFFSET(A1,3,1,1,3) op zichzelf, zal het een #VALUE! fout gooien, omdat een bereik om terug te geven (1 rij, 3 kolommen) niet in een enkele cel past. Als je het echter in de SUM-functie integreert, zoals dit:

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

    De formule geeft de som van de waarden in een bereik van 1 rij bij 3 kolommen dat zich 3 rijen onder en 1 kolom rechts van cel A1 bevindt, d.w.z. het totaal van de waarden in de cellen B4:D4.

    Waarom gebruik ik OFFSET in Excel?

    Nu je weet wat de OFFSET-functie doet, vraag je je misschien af: "Waarom die functie gebruiken?" Waarom niet gewoon een directe verwijzing schrijven zoals B4:D4?

    De Excel OFFSET formule is zeer goed voor:

    Dynamische bereiken creëren Verwijzingen zoals B1:C4 zijn statisch, wat betekent dat ze altijd verwijzen naar een bepaald bereik. Maar sommige taken zijn gemakkelijker uit te voeren met dynamische bereiken. Dit is met name het geval wanneer u werkt met veranderende gegevens, bijvoorbeeld wanneer u een werkblad hebt waar elke week een nieuwe rij of kolom wordt toegevoegd.

    Het bereik krijgen van de startcel Soms weet u het werkelijke adres van het bereik niet, maar weet u wel dat het begint bij een bepaalde cel. In dergelijke scenario's is het gebruik van OFFSET in Excel de juiste manier.

    Hoe de OFFSET-functie gebruiken in Excel - formulevoorbeelden

    Ik hoop dat je je niet verveeld hebt met zoveel theorie. Hoe dan ook, nu komen we bij het spannendste deel - praktisch gebruik van de OFFSET-functie.

    Excel OFFSET en SUM functies

    Het voorbeeld dat we zojuist bespraken toont het eenvoudigste gebruik van OFFSET & SUM. Laten we deze functies nu eens vanuit een andere hoek bekijken en zien wat ze nog meer kunnen.

    Voorbeeld 1. Een dynamische SUM / OFFSET-formule

    Wanneer u werkt met voortdurend bijgewerkte werkbladen, wilt u misschien een SUM-formule die automatisch alle nieuw toegevoegde rijen pakt.

    Stel, u hebt de brongegevens zoals u ziet in de schermafbeelding hieronder. Elke maand wordt een nieuwe rij toegevoegd net boven de SUM-formule, en natuurlijk wilt u die in het totaal laten opnemen. Over het geheel genomen zijn er twee keuzes - elke keer handmatig het bereik in de SUM-formule bijwerken of de OFFSET-formule dit voor u laten doen.

    Aangezien de eerste cel van het op te tellen bereik rechtstreeks in de SUM-formule wordt gespecificeerd, hoeft u alleen de parameters te bepalen voor de Excel OFFSET-functie, die de laatste cel van het bereik krijgt:

    • Referentie - de cel met het totaal, B9 in ons geval.
    • Rijen - de cel direct boven het totaal, waarvoor het negatieve getal -1 nodig is.
    • Cols - het is 0 omdat je de kolom niet wilt veranderen.

    Dus, hier gaat het SUM / OFFSET formulepatroon:

    =SUM( eerste cel :(OFFSET( cel met totaal , -1,0)

    Aangepast voor bovenstaand voorbeeld ziet de formule er als volgt uit:

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

    En zoals de onderstaande screenshot laat zien, werkt het feilloos:

    Voorbeeld 2. Excel OFFSET formule om de laatste N rijen op te tellen

    Stel dat u in het bovenstaande voorbeeld het bedrag van de bonussen voor de laatste N maanden wilt weten in plaats van het eindtotaal. U wilt ook dat de formule automatisch alle nieuwe rijen die u aan het blad toevoegt opneemt.

    Voor deze taak gaan we Excel OFFSET gebruiken in combinatie met de functies SUM en COUNT / COUNTA:

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

    of

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

    De volgende details kunnen u helpen de formules beter te begrijpen:

    • Referentie - de kop van de kolom waarvan u de waarden wilt optellen, cel B1 in dit voorbeeld.
    • Rijen - om het aantal rijen te berekenen dat moet worden gecompenseerd, gebruikt u de functie COUNT of COUNTA.

      COUNT geeft het aantal cellen in kolom B die getallen bevatten, waarvan u de laatste N maanden aftrekt (het getal is cel E1), en er 1 bij optelt.

      Als COUNTA de functie van uw keuze is, hoeft u geen 1 toe te voegen, aangezien deze functie alle niet-lege cellen telt, en een header-rij met een tekstwaarde een extra cel toevoegt die onze formule nodig heeft. Merk op dat deze formule alleen correct zal werken op een vergelijkbare tabelstructuur - één header-rij gevolgd door rijen met getallen. Voor andere tabellayouts moet u wellicht enkele aanpassingen maken in deOFFSET/COUNTA formule.

    • Cols - het aantal te compenseren kolommen is nul (0).
    • Hoogte - het aantal op te tellen rijen wordt gespecificeerd in E1.
    • Breedte - 1 kolom.

    Gebruik van de OFFSET-functie met AVERAGE, MAX, MIN

    Op dezelfde manier als we de bonussen voor de laatste N maanden hebben berekend, kunt u een gemiddelde krijgen van de laatste N dagen, weken of jaren en hun maximum- of minimumwaarden vinden. Het enige verschil tussen de formules is de naam van de eerste functie:

    =GEMIDDELDE(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))

    Het grote voordeel van deze formules boven de gebruikelijke AVERAGE(B5:B8) of MAX(B5:B8) is dat u de formule niet telkens hoeft bij te werken als uw brontabel wordt bijgewerkt. Hoeveel nieuwe rijen er ook worden toegevoegd of verwijderd in uw werkblad, de OFFSET-formules zullen altijd verwijzen naar het opgegeven aantal laatste (onderste) cellen in de kolom.

    Excel OFFSET-formule om een dynamisch bereik te maken

    In combinatie met COUNTA kan de functie OFFSET u helpen een dynamisch bereik te maken dat in veel scenario's nuttig kan blijken, bijvoorbeeld om automatisch bij te werken vervolgkeuzelijsten te maken.

    De OFFSET-formule voor een dynamisch bereik is als volgt:

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

    In het hart van deze formule gebruikt u de functie COUNTA om het aantal niet-blanco cellen in de doelkolom te krijgen. Dat getal gaat naar het hoogte-argument van OFFSET, dat aangeeft hoeveel rijen er moeten worden teruggegeven.

    Afgezien daarvan is het een gewone Offset-formule, waarbij:

    • Referentie is het beginpunt waarop u de offset baseert, bijvoorbeeld Sheet1!$A$1.
    • Rijen en Cols zijn beide 0 omdat er geen kolommen of rijen zijn om te compenseren.
    • Breedte is 1 kolom.

    Opmerking: Als u een dynamisch bereik maakt in het huidige blad, hoeft u de bladnaam niet op te nemen in de verwijzingen, Excel doet dit automatisch voor u bij het maken van het genoemde bereik. Anders moet u de bladnaam opnemen gevolgd door het uitroepteken zoals in dit formulevoorbeeld.

    Zodra u een dynamisch naambereik hebt gemaakt met de bovenstaande OFFSET-formule, kunt u Data Validation gebruiken om een dynamische vervolgkeuzelijst te maken die automatisch wordt bijgewerkt zodra u items toevoegt of verwijdert uit de bronlijst.

    Voor de gedetailleerde stap-voor-stap begeleiding bij het maken van vervolgkeuzelijsten in Excel kunt u de volgende tutorials bekijken:

    • Keuzelijsten maken in Excel - statisch, dynamisch, vanuit een andere werkmap
    • Een afhankelijke keuzelijst maken

    Excel OFFSET & VLOOKUP

    Zoals iedereen weet, worden eenvoudige verticale en horizontale lookups uitgevoerd met respectievelijk de functie VLOOKUP of HLOOKUP. Deze functies hebben echter te veel beperkingen en haperen vaak bij krachtigere en complexere lookup-formules. Om meer geavanceerde lookups in uw Excel-tabellen uit te voeren, moet u dus op zoek naar alternatieven zoals INDEX, MATCH en OFFSET.

    Voorbeeld 1. OFFSET-formule voor een linkse Vlookup in Excel

    Een van de meest beruchte beperkingen van de VLOOKUP-functie is het onvermogen om aan de linkerkant te kijken, wat betekent dat VLOOKUP alleen een waarde aan de rechterkant van de opzoekkolom kan teruggeven.

    In onze voorbeeldopzoektabel zijn er twee kolommen - maandnamen (kolom A) en bonussen (kolom B). Als u een bonus voor een bepaalde maand wilt krijgen, zal deze eenvoudige VLOOKUP-formule probleemloos werken:

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

    Zodra u echter de kolommen in de opzoektabel verwisselt, leidt dit onmiddellijk tot de #N/A-fout:

    Om een lookup aan de linkerkant te verwerken, heb je een veelzijdigere functie nodig die het niet uitmaakt waar de retourkolom zich bevindt. Een van de mogelijke oplossingen is het gebruik van een combinatie van INDEX- en MATCH-functies. Een andere aanpak is het gebruik van OFFSET, MATCH en ROWS:

    OFFSET( opzoekingstabel , MATCH( lookup_waarde , OFFSET( opzoekingstabel , 0, lookup_col_offset , ROWS( opzoekingstabel ), 1) ,0) -1, return_col_offset , 1, 1)

    Waar:

    • Lookup_col_offset - is het aantal kolommen dat moet worden verplaatst van het beginpunt naar de opzoekkolom.
    • Retour_col_offset - is het aantal kolommen dat moet worden verplaatst van het beginpunt naar de retourkolom.

    In ons voorbeeld is de lookup tabel A5:B9 en de lookup waarde is in cel B1, de lookup kolom offset is 1 (omdat we zoeken naar de lookup waarde in de tweede kolom (B), moeten we 1 kolom naar rechts verplaatsen vanaf het begin van de tabel), de return kolom offset is 0 omdat we waarden retourneren uit de eerste kolom (A):

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

    Ik weet dat de formule er wat onhandig uitziet, maar het werkt wel :)

    Voorbeeld 2. Hoe doe je een bovenste lookup in Excel?

    Net zoals VLOOKUP niet naar links kan kijken, kan zijn horizontale tegenhanger - HLOOKUP-functie - niet naar boven kijken om een waarde terug te geven.

    Als u een bovenste rij moet scannen op overeenkomsten, kan de OFFSET MATCH-formule opnieuw helpen, maar deze keer moet u het uitbreiden met de functie COLUMNS, zoals dit:

    OFFSET( opzoekingstabel , return_row_offset , MATCH( lookup_waarde , OFFSET( opzoekingstabel , lookup_row_offset , 0, 1, KOLOMMEN( opzoekingstabel )), 0) -1, 1, 1)

    Waar:

    • Lookup_row_offset - het aantal rijen dat moet worden verplaatst van het beginpunt naar de opzoekrij.
    • Return_row_offset - het aantal rijen dat moet worden verplaatst van het beginpunt naar de terugkeerrij.

    Ervan uitgaande dat de opzoektabel B4:F5 is en de opzoekwaarde in cel B1 staat, gaat de formule als volgt:

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

    In ons geval is de lookup rij offset 1 omdat ons lookup bereik 1 rij lager is dan het startpunt, de return rij offset is 0 omdat we matches retourneren van de eerste rij in de tabel.

    Voorbeeld 3. Tweezijdige lookup (op basis van kolom- en rijwaarden)

    Tweeweg lookup geeft een waarde terug op basis van overeenkomsten in zowel de rijen als de kolommen. En u kunt de volgende dubbele lookup array formule gebruiken om een waarde te vinden op het snijpunt van een bepaalde rij en kolom:

    =OFFSET( opzoektabel , MATCH( rij-opzoekwaarde , OFFSET( opzoektabel , 0, 0, ROWS( opzoektabel ), 1), 0) -1, MATCH( kolom lookup waarde , OFFSET( opzoektabel , 0, 0, 1, KOLOMMEN( opzoektabel )), 0) -1)

    Gezien dat:

    • De opzoektabel is A5:G9
    • De waarde die op de rijen moet worden afgestemd staat in B2
    • De op de kolommen af te stemmen waarde staat in B1

    U krijgt de volgende tweedimensionale opzoekformule:

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

    Het is niet het makkelijkste om te onthouden, hè? Bovendien is dit een matrixformule, dus vergeet niet op Ctrl + Shift + Enter te drukken om het correct in te voeren.

    Natuurlijk is deze lange OFFSET formule niet de enige mogelijke manier om een dubbele lookup te doen in Excel. U kunt hetzelfde resultaat krijgen door gebruik te maken van de VLOOKUP & MATCH functies, SUMPRODUCT, of INDEX & MATCH. Er is zelfs een formule-vrije manier - door gebruik te maken van benoemde bereiken en de snij-operator (spatie). De volgende tutorial legt alle alternatieve oplossingen in detail uit: Hoe doe je twee richtingen?opzoeken in Excel.

    OFFSET-functie - beperkingen en alternatieven

    Hopelijk hebben de formulevoorbeelden op deze pagina enig licht geworpen op het gebruik van OFFSET in Excel. Om de functie echter efficiënt te gebruiken in uw eigen werkmappen, moet u niet alleen op de hoogte zijn van de sterke punten, maar ook op uw hoede zijn voor de zwakke punten.

    De belangrijkste beperkingen van de Excel OFFSET-functie zijn de volgende:

    • Net als andere vluchtige functies is OFFSET een functie die veel middelen vraagt Telkens wanneer de brongegevens veranderen, worden uw OFFSET-formules opnieuw berekend, waardoor Excel iets langer bezig blijft. Dit is geen probleem voor een enkele formule in een kleine spreadsheet. Maar als er tientallen of honderden formules in een werkmap staan, kan Microsoft Excel er behoorlijk lang over doen om opnieuw te berekenen.
    • Excel OFFSET formules zijn moeilijk te beoordelen Omdat de referenties die de OFFSET-functie teruggeeft dynamisch zijn, kunnen grote formules (vooral met geneste OFFSET's) behoorlijk lastig zijn om te debuggen.

    Alternatieven voor OFFSET in Excel

    Zoals vaak het geval is in Excel, kan hetzelfde resultaat op een aantal verschillende manieren worden bereikt. Hier zijn dus drie elegante alternatieven voor OFFSET.

    1. Excel-tabellen

      Sinds Excel 2002 hebben we een werkelijk prachtige functie - volwaardige Excel-tabellen, in tegenstelling tot de gebruikelijke reeksen. Om een tabel te maken van gestructureerde gegevens, klikt u gewoon op Invoegen> Tabel op de Home of druk op Ctrl + T .

      Door een formule in te voeren in één cel van een Excel-tabel, kunt u een zogenaamde "berekende kolom" maken die de formule automatisch kopieert naar alle andere cellen in die kolom en de formule aanpast voor elke rij in de tabel.

      Bovendien wordt elke formule die verwijst naar de gegevens van een tabel automatisch aangepast om alle nieuwe rijen die u aan de tabel toevoegt op te nemen of de rijen die u verwijdert uit te sluiten. Technisch gezien werken dergelijke formules op kolommen of rijen in de tabel, die dynamische bereiken Elke tabel in een werkmap heeft een unieke naam (de standaardnamen zijn Tabel1, Tabel2, enz.) en het staat u vrij om uw tabel een andere naam te geven via het menu Ontwerp tab> Eigenschappen groep> Naam van de tafel tekstvak.

      De volgende schermafbeelding toont de SUM-formule die verwijst naar de Bonus kolom van tabel 3. Let erop dat de formule ook de tabel kolomnaam in plaats van een reeks cellen.

    2. Excel INDEX functie

      Hoewel niet precies op dezelfde manier als OFFSET, kan Excel INDEX ook worden gebruikt om dynamische bereikverwijzingen te maken. In tegenstelling tot OFFSET is de INDEX-functie niet vluchtig, zodat deze uw Excel niet zal vertragen.

    3. Excel INDIRECT functie

      Met de functie INDIRECT kunt u dynamische bereikverwijzingen maken van vele bronnen, zoals celwaarden, celwaarden en tekst, reeksen met een naam. De functie kan ook dynamisch verwijzen naar een ander Excel-blad of werkmap. U kunt al deze formulevoorbeelden vinden in onze Excel INDIRECT functie tutorial.

    Herinner je je de vraag die aan het begin van deze handleiding werd gesteld... Wat is OFFSET in Excel? Ik hoop dat je nu het antwoord weet : ) Als je wat meer praktijkervaring wilt, voel je dan vrij om ons oefenwerkboek te downloaden (zie hieronder) met alle formules die op deze pagina zijn besproken en maak ze omgekeerd voor een beter begrip. Bedankt voor het lezen!

    Praktijk werkboek om te downloaden

    OFFSET-formulevoorbeelden (.xlsx-bestand)

    Michael Brown is een toegewijde technologieliefhebber met een passie voor het vereenvoudigen van complexe processen met behulp van softwaretools. Met meer dan tien jaar ervaring in de technische industrie heeft hij zijn vaardigheden in Microsoft Excel en Outlook, evenals Google Spreadsheets en Documenten aangescherpt. Michael's blog is gewijd aan het delen van zijn kennis en expertise met anderen, met eenvoudig te volgen tips en tutorials voor het verbeteren van de productiviteit en efficiëntie. Of je nu een doorgewinterde professional of een beginner bent, Michaels blog biedt waardevolle inzichten en praktisch advies om het meeste uit deze essentiële softwaretools te halen.