Funkce OFFSET aplikace Excel - příklady vzorců a použití

  • Sdílet Toto
Michael Brown

V tomto tutoriálu si posvítíme na jednoho z nejzáhadnějších obyvatel excelovského vesmíru - funkci OFFSET.

Co je to OFFSET v aplikaci Excel? Stručně řečeno, vzorec OFFSET vrací odkaz na rozsah, který je posunutý od počáteční buňky nebo rozsahu buněk o zadaný počet řádků a sloupců.

Funkce OFFSET může být poněkud složitější, proto si nejprve projdeme krátké technické vysvětlení (budu se snažit, aby bylo jednoduché) a poté se budeme věnovat několika nejefektivnějším způsobům, jak funkci OFFSET v Excelu používat.

    Funkce OFFSET aplikace Excel - syntaxe a základní použití

    Funkce OFFSET v aplikaci Excel vrací buňku nebo rozsah buněk, které jsou od dané buňky nebo rozsahu vzdáleny o daný počet řádků a sloupců.

    Syntaxe funkce OFFSET je následující:

    OFFSET(reference, rows, cols, [height], [width])

    První 3 argumenty jsou povinné a poslední 2 nepovinné. Všechny argumenty mohou být odkazy na jiné buňky nebo výsledky vrácené jinými vzorci.

    Vypadá to, že se společnost Microsoft snažila dát názvům parametrů určitý význam a naznačit, co máte v každém z nich zadat.

    Požadované argumenty:

    • Odkaz - buňku nebo rozsah sousedních buněk, ze kterých vycházíte při posunu. Můžete si ji představit jako výchozí bod.
    • Řádky - Počet řádků, o které se má vzorec posunout od počátečního bodu nahoru nebo dolů. Je-li řádek kladné číslo, vzorec se posune pod počáteční odkaz, v případě záporného čísla se posune nad počáteční odkaz.
    • Cols - Počet sloupců, o které se má vzorec posunout od počátečního bodu. Stejně jako řádky mohou být i sloupce kladné (vpravo od počátečního odkazu) nebo záporné (vlevo od počátečního odkazu).

    Nepovinné argumenty:

    • Výška - počet řádků, které se mají vrátit.
    • Šířka - počet sloupců, které se mají vrátit.

    Argumenty výška i šířka musí být vždy kladná čísla. Pokud je některý z nich vynechán, je výchozí hodnotou výška nebo šířka. odkaz .

    Poznámka: Funkce OFFSET je nestabilní a může zpomalit pracovní list. Zpomalení je přímo úměrné počtu přepočítávaných buněk.

    A nyní si teorii ilustrujme na příkladu nejjednoduššího vzorce OFFSET.

    Příklad vzorce OFFSET aplikace Excel

    Zde je příklad jednoduchého vzorce OFFSET, který vrací odkaz na buňku na základě zadaného počátečního bodu, řádků a sloupců:

    =OFFSET(A1,3,1)

    Vzorec říká aplikaci Excel, aby vzala buňku A1 jako výchozí bod (odkaz) a poté se posunula o 3 řádky dolů (argument rows) a o 1 sloupec doleva (argument cols). Výsledkem tohoto vzorce OFFSET je hodnota v buňce B4.

    Obrázek vlevo ukazuje trasu funkce a snímek obrazovky vpravo demonstruje, jak lze vzorec OFFSET použít na reálných datech. Jediný rozdíl mezi oběma vzorci je v tom, že druhý vzorec (vpravo) obsahuje v argumentu řádků odkaz na buňku (E1). Protože však buňka E1 obsahuje číslo 3 a přesně stejné číslo se objevuje v argumentu řádků prvního vzorce,by oba vracely stejný výsledek - hodnotu v B4.

    Vzorce OFFSET aplikace Excel - co si zapamatovat

    • Funkce OFFSET v aplikaci Excel ve skutečnosti nepřesouvá žádné buňky ani rozsahy, pouze vrací odkaz.
    • Pokud vzorec OFFSET vrací rozsah buněk, argumenty rows a cols se vždy vztahují k levé horní buňce vráceného rozsahu.
    • Argument reference musí obsahovat buňku nebo rozsah sousedních buněk, jinak vzorec vrátí chybu #VALUE!.
    • Pokud zadané řádky a/nebo sloupce přesunou odkaz za okraj tabulky, vzorec Excel OFFSET vrátí chybu #REF!.
    • Funkci OFFSET lze použít v rámci jakékoli jiné funkce aplikace Excel, která ve svých argumentech přijímá odkaz na buňku / rozsah.

    Pokud se například pokusíte použít vzorec =OFFSET(A1,3,1,1,3) sama o sobě vyhodí chybu #VALUE!, protože rozsah, který má vrátit (1 řádek, 3 sloupce), se nevejde do jedné buňky. Pokud ji však vložíte do funkce SUM, jako je tato:

    =SOUČET(OFFSET(A1,3,1,1,3))

    Vzorec vrátí součet hodnot v rozsahu 1 řádek po 3 sloupcích, který se nachází 3 řádky pod a 1 sloupec vpravo od buňky A1, tj. součet hodnot v buňkách B4:D4.

    Proč v aplikaci Excel používám OFFSET?

    Teď, když víte, co funkce OFFSET dělá, se možná ptáte: "Proč ji používat?" Proč jednoduše nenapsat přímý odkaz, například B4:D4?

    Vzorec OFFSET aplikace Excel je velmi vhodný pro:

    Vytváření dynamických rozsahů : Odkazy jako B1:C4 jsou statické, což znamená, že se vždy vztahují k danému rozsahu. Některé úlohy je však snazší provádět s dynamickými rozsahy. To je zejména případ, kdy pracujete s měnícími se daty, např. máte pracovní list, kde každý týden přibývá nový řádek nebo sloupec.

    Získání rozsahu z počáteční buňky . Někdy se může stát, že neznáte skutečnou adresu rozsahu, i když víte, že začíná od určité buňky. V takových případech je použití funkce OFFSET v aplikaci Excel správnou cestou.

    Jak používat funkci OFFSET v aplikaci Excel - příklady vzorců

    Doufám, že vás tolik teorie ještě neomrzelo. Každopádně se nyní dostáváme k tomu nejzajímavějšímu - praktickému využití funkce OFFSET.

    Funkce OFFSET a SUM aplikace Excel

    Příklad, o kterém jsme hovořili před chvílí, ukazuje nejjednodušší použití funkcí OFFSET & SUM. Podívejme se nyní na tyto funkce z jiného úhlu a zjistěme, co ještě umí.

    Příklad 1. Dynamický vzorec SUMA / OFFSET

    Při práci s průběžně aktualizovanými listy můžete chtít použít vzorec SUMA, který automaticky vybere všechny nově přidané řádky.

    Předpokládejme, že máte zdrojová data podobná tomu, co vidíte na obrázku níže. Každý měsíc přibude nový řádek těsně nad vzorcem SUMA a vy samozřejmě chcete, aby byl zahrnut do celkového součtu. Celkově máte dvě možnosti - buď pokaždé aktualizovat rozsah ve vzorci SUMA ručně, nebo to za vás udělá vzorec OFFSET.

    Vzhledem k tomu, že první buňka rozsahu, která se má sečíst, bude zadána přímo ve vzorci SUMA, stačí rozhodnout o parametrech funkce Excel OFFSET, která získá poslední buňku rozsahu:

    • Odkaz - buňku obsahující celkový počet, v našem případě B9.
    • Řádky - buňka vpravo nad součtem, která vyžaduje záporné číslo -1.
    • Cols - je 0, protože nechcete měnit sloupec.

    Zde je vzor vzorce SUMA / OFFSET:

    =SUMA( první buňka :(OFFSET( buňka s celkovým , -1,0)

    Upravený vzorec pro výše uvedený příklad vypadá takto:

    =SOUČET(B2:(OFFSET(B9, -1, 0)))

    A jak ukazuje následující snímek obrazovky, funguje bezchybně:

    Příklad 2. Vzorec Excel OFFSET pro součet posledních N řádků

    Předpokládejme, že ve výše uvedeném příkladu chcete znát částku bonusů za posledních N měsíců, nikoli celkový součet. Chcete také, aby vzorec automaticky zahrnoval všechny nové řádky, které do listu přidáte.

    Pro tento úkol použijeme v aplikaci Excel funkci OFFSET v kombinaci s funkcemi SUM a COUNT / COUNTA:

    =SOUČET(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    nebo

    =SOUČET(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))

    Následující údaje vám pomohou lépe porozumět vzorcům:

    • Odkaz - záhlaví sloupce, jehož hodnoty chcete sečíst, v tomto příkladu buňka B1.
    • Řádky - pro výpočet počtu řádků, které mají být odsazeny, použijete funkci COUNT nebo COUNTA.

      COUNT vrátí počet buněk ve sloupci B, které obsahují čísla, od nichž odečtete posledních N měsíců (číslo je buňka E1) a přičtete 1.

      Pokud je vaší volbou funkce COUNTA, nemusíte přidávat 1, protože tato funkce počítá všechny neprázdné buňky a řádek záhlaví s textovou hodnotou přidává další buňku, kterou náš vzorec potřebuje. Upozorňujeme, že tento vzorec bude správně fungovat pouze při podobné struktuře tabulky - jeden řádek záhlaví a za ním řádky s čísly. V případě jiného uspořádání tabulky bude možná nutné provést určité úpravy v příkazuVzorec OFFSET/COUNTA.

    • Cols - počet sloupců k odsazení je nula (0).
    • Výška - počet řádků, které se mají sečíst, je uveden v položce E1.
    • Šířka - 1 sloupec.

    Použití funkce OFFSET s funkcemi AVERAGE, MAX, MIN

    Stejným způsobem, jakým jsme vypočítali bonusy za posledních N měsíců, můžete získat průměr posledních N dnů, týdnů nebo let a také zjistit jejich maximální nebo minimální hodnoty. Jediný rozdíl mezi vzorci je v názvu první funkce:

    =PRŮMĚR(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))

    Hlavní výhodou těchto vzorců oproti obvyklým vzorcům AVERAGE(B5:B8) nebo MAX(B5:B8) je to, že nebudete muset vzorec aktualizovat při každé aktualizaci zdrojové tabulky. Bez ohledu na to, kolik nových řádků bude v pracovním listu přidáno nebo odstraněno, budou vzorce OFFSET vždy odkazovat na zadaný počet posledních (nejspodnějších) buněk ve sloupci.

    Vzorec OFFSET aplikace Excel pro vytvoření dynamického rozsahu

    Ve spojení s funkcí COUNTA vám funkce OFFSET pomůže vytvořit dynamický rozsah, který se může hodit v mnoha scénářích, například při vytváření automaticky aktualizovatelných rozevíracích seznamů.

    Vzorec OFFSET pro dynamický rozsah je následující:

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

    Jádrem tohoto vzorce je funkce COUNTA, která zjišťuje počet neprázdných buněk v cílovém sloupci. Toto číslo se přenáší do argumentu výšky funkce OFFSET, která udává, kolik řádků má vrátit.

    Kromě toho se jedná o běžný vzorec Offset, kde:

    • Odkaz je výchozí bod, ze kterého se vychází při posunu, například List1!$A$1.
    • Řádky a Cols jsou obě 0, protože neexistují žádné sloupce ani řádky, které by bylo třeba posunout.
    • Šířka je 1 sloupec.

    Poznámka: Pokud vytváříte dynamický rozsah v aktuálním listu, není třeba uvádět název listu v odkazech, Excel to udělá automaticky při vytváření pojmenovaného rozsahu. V opačném případě nezapomeňte uvést název listu následovaný vykřičníkem jako v tomto příkladu vzorce.

    Po vytvoření dynamického pojmenovaného rozsahu pomocí výše uvedeného vzorce OFFSET můžete pomocí funkce Ověřování dat vytvořit dynamický rozevírací seznam, který se bude automaticky aktualizovat, jakmile přidáte nebo odeberete položky ze zdrojového seznamu.

    Podrobný návod krok za krokem k vytváření rozevíracích seznamů v aplikaci Excel naleznete v následujících výukových materiálech:

    • Vytváření rozevíracích seznamů v aplikaci Excel - statické, dynamické, z jiného sešitu
    • Vytvoření závislého rozevíracího seznamu

    Excel OFFSET & VLOOKUP

    Jak každý ví, jednoduché vertikální a horizontální vyhledávání se provádí pomocí funkce VLOOKUP, respektive HLOOKUP. Tyto funkce však mají příliš mnoho omezení a často narážejí na výkonnější a složitější vyhledávací vzorce. Chcete-li tedy v tabulkách Excelu provádět složitější vyhledávání, musíte se poohlédnout po alternativách, jako jsou INDEX, MATCH a OFFSET.

    Příklad 1. Vzorec OFFSET pro levý Vlookup v aplikaci Excel

    Jedním z nejznámějších omezení funkce VLOOKUP je nemožnost pohledu vlevo, což znamená, že VLOOKUP může vrátit pouze hodnotu napravo od sloupce vyhledávání.

    V naší ukázkové vyhledávací tabulce jsou dva sloupce - názvy měsíců (sloupec A) a bonusy (sloupec B). Pokud chcete získat bonus za určitý měsíc, bude tento jednoduchý vzorec VLOOKUP fungovat bez problémů:

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

    Jakmile však prohodíte sloupce ve vyhledávací tabulce, okamžitě se objeví chyba #N/A:

    Pro zpracování vyhledávání na levé straně potřebujete univerzálnější funkci, které je v podstatě jedno, kde se nachází vracený sloupec. Jedním z možných řešení je použití kombinace funkcí INDEX a MATCH. Dalším přístupem je použití funkcí OFFSET, MATCH a 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)

    Kde:

    • Lookup_col_offset - je počet sloupců, které se mají přesunout z výchozího bodu do sloupce vyhledávání.
    • Return_col_offset - je počet sloupců, které se mají přesunout z počátečního bodu do návratového sloupce.

    V našem příkladu je vyhledávací tabulka A5:B9 a vyhledávací hodnota je v buňce B1, posun vyhledávacího sloupce je 1 (protože hledáme vyhledávací hodnotu ve druhém sloupci (B), musíme se posunout o 1 sloupec doprava od začátku tabulky), posun návratového sloupce je 0, protože vracíme hodnoty z prvního sloupce (A):

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

    Vím, že vzorec vypadá trochu neohrabaně, ale funguje :)

    Příklad 2. Jak provést horní vyhledávání v aplikaci Excel

    Stejně jako v případě funkce VLOOKUP, která se nemůže podívat doleva, se její horizontální protějšek - funkce HLOOKUP - nemůže podívat nahoru a vrátit hodnotu.

    Pokud potřebujete vyhledat shodu v horním řádku, může vám opět pomoci vzorec OFFSET MATCH, ale tentokrát jej budete muset rozšířit o funkci COLUMNS, například takto:

    OFFSET( lookup_table , return_row_offset , MATCH( lookup_value , OFFSET( lookup_table , lookup_row_offset , 0, 1, SLOUPCE( lookup_table )), 0) -1, 1, 1)

    Kde:

    • Lookup_row_offset - počet řádků, které se přesunou z výchozího bodu na vyhledávací řádek.
    • Return_row_offset - počet řádků, které se mají přesunout z počátečního bodu do návratového řádku.

    Za předpokladu, že vyhledávací tabulka je B4:F5 a vyhledávací hodnota je v buňce B1, vzorec vypadá takto:

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

    V našem případě je posun řádku vyhledávání 1, protože náš rozsah vyhledávání je o 1 řádek níže od počátečního bodu, posun vráceného řádku je 0, protože vracíme shody z prvního řádku tabulky.

    Příklad 3. Obousměrné vyhledávání (podle hodnot sloupce a řádku)

    Obousměrné vyhledávání vrací hodnotu na základě shody v řádcích i sloupcích. A k nalezení hodnoty v průsečíku určitého řádku a sloupce můžete použít následující vzorec pro dvojité vyhledávání pole:

    =OFFSET( vyhledávací tabulka , MATCH( hodnota vyhledávání řádků , OFFSET( vyhledávací tabulka , 0, 0, ROWS( vyhledávací tabulka ), 1), 0) -1, MATCH( hodnota vyhledávání sloupce , OFFSET( vyhledávací tabulka , 0, 0, 1, SLOUPCE( vyhledávací tabulka )), 0) -1)

    Vzhledem k tomu:

    • Vyhledávací tabulka je A5:G9
    • Hodnota, která se má na řádcích shodovat, je v položce B2.
    • Hodnota, která se má ve sloupcích shodovat, je v položce B1.

    Získáte následující dvourozměrný vyhledávací vzorec:

    =OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, ŘÁDKY(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, SLOUPCE(A5:G9)), 0) -1)

    Není to zrovna nejjednodušší na zapamatování, že? Navíc se jedná o vzorec pole, takže pro jeho správné zadání nezapomeňte stisknout kombinaci kláves Ctrl + Shift + Enter.

    Tento zdlouhavý vzorec OFFSET samozřejmě není jediným možným způsobem, jak v Excelu provést dvojí vyhledávání. Stejného výsledku můžete dosáhnout pomocí funkcí VLOOKUP & MATCH, SUMPRODUCT nebo INDEX & MATCH. Existuje dokonce i způsob bez použití vzorce - použití pojmenovaných rozsahů a operátoru průniku (mezera). V následujícím tutoriálu jsou všechna alternativní řešení podrobně vysvětlena: Jak provést dvojí vyhledávání?vyhledávání v aplikaci Excel.

    Funkce OFFSET - omezení a alternativy

    Doufejme, že příklady vzorců na této stránce objasnily, jak používat funkci OFFSET v aplikaci Excel. Chcete-li však funkci efektivně využívat ve svých sešitech, měli byste znát nejen její silné stránky, ale také si dát pozor na její slabiny.

    Nejdůležitější omezení funkce OFFSET aplikace Excel jsou následující:

    • Stejně jako ostatní těkavé funkce je OFFSET funkce náročná na zdroje . Kdykoli dojde k jakékoli změně ve zdrojových datech, vaše vzorce OFFSET se přepočítají, čímž se Excel na chvíli zdrží. To není problém u jediného vzorce v malé tabulce. Pokud jsou však v sešitě desítky nebo stovky vzorců, může přepočítávání v aplikaci Microsoft Excel trvat poměrně dlouho.
    • Vzorce OFFSET aplikace Excel jsou těžko přezkoumatelný Protože odkazy vracené funkcí OFFSET jsou dynamické, může být ladění velkých vzorců (zejména s vnořenými OFFSET) poměrně složité.

    Alternativy použití OFFSET v aplikaci Excel

    Jak už to v Excelu bývá, stejného výsledku lze dosáhnout různými způsoby. Zde jsou tedy tři elegantní alternativy k příkazu OFFSET.

    1. Tabulky aplikace Excel

      Od aplikace Excel 2002 máme k dispozici skutečně úžasnou funkci - plnohodnotné tabulky aplikace Excel, na rozdíl od běžných rozsahů. Chcete-li vytvořit tabulku ze strukturovaných dat, stačí kliknout na tlačítko Vložit> Tabulka na Home nebo stiskněte klávesovou zkratku Ctrl + T .

      Zadáním vzorce do jedné buňky v tabulce aplikace Excel můžete vytvořit takzvaný "vypočtený sloupec", který automaticky zkopíruje vzorec do všech ostatních buněk v tomto sloupci a upraví vzorec pro každý řádek tabulky.

      Kromě toho se každý vzorec, který odkazuje na data tabulky, automaticky přizpůsobí tak, aby zahrnoval všechny nové řádky, které do tabulky přidáte, nebo aby vyloučil řádky, které odstraníte. Technicky vzato takové vzorce pracují se sloupci nebo řádky tabulky, které jsou dynamické rozsahy Každá tabulka v sešitě má svůj jedinečný název (výchozí jsou Tabulka1, Tabulka2 atd.) a můžete si ji libovolně přejmenovat pomocí příkazu Design karta> Vlastnosti skupina> Název tabulky textové pole.

      Následující snímek obrazovky ukazuje vzorec SUMA, který se vztahuje k položce Bonus sloupce tabulky3. Věnujte prosím pozornost tomu, že vzorec obsahuje tabulku název sloupce spíše než rozsah buněk.

    2. Funkce INDEX aplikace Excel

      I když ne zcela stejným způsobem jako OFFSET, lze funkci INDEX v aplikaci Excel použít také k vytvoření dynamických odkazů na rozsah. Na rozdíl od OFFSET není funkce INDEX nestálá, takže nezpomaluje práci aplikace Excel.

    3. Funkce INDIRECT aplikace Excel

      Pomocí funkce INDIRECT můžete vytvářet dynamické odkazy na rozsahy z mnoha zdrojů, jako jsou hodnoty buněk, hodnoty buněk a text, pojmenované rozsahy. Může také dynamicky odkazovat na jiný list nebo sešit aplikace Excel. Všechny tyto příklady vzorců najdete v našem výukovém kurzu funkce INDIRECT aplikace Excel.

    Vzpomínáte si na otázku položenou na začátku tohoto tutoriálu - Co je to OFFSET v aplikaci Excel? Doufám, že teď už znáte odpověď : ) Pokud chcete získat více praktických zkušeností, neváhejte si stáhnout náš cvičný sešit (viz níže), který obsahuje všechny vzorce probírané na této stránce, a zpětně si je vyzkoušejte pro hlubší pochopení. Děkujeme za přečtení!

    Cvičebnice ke stažení

    Příklady vzorců OFFSET (.xlsx soubor)

    Michael Brown je oddaný technologický nadšenec s vášní pro zjednodušování složitých procesů pomocí softwarových nástrojů. S více než desetiletými zkušenostmi v technologickém průmyslu zdokonalil své dovednosti v aplikacích Microsoft Excel a Outlook a také v Tabulkách a Dokumentech Google. Michaelův blog je věnován sdílení jeho znalostí a odborných znalostí s ostatními a poskytuje snadno pochopitelné tipy a návody pro zlepšení produktivity a efektivity. Ať už jste zkušený profesionál nebo začátečník, Michaelův blog nabízí cenné postřehy a praktické rady, jak tyto základní softwarové nástroje co nejlépe využít.