Funkce INDIRECT aplikace Excel - základní použití a příklady vzorců

  • Sdílet Toto
Michael Brown

Tento výukový program Excel INDIRECT vysvětluje syntaxi funkce, její základní použití a uvádí řadu příkladů vzorců, které ukazují, jak funkci INDIRECT v aplikaci Excel používat.

V aplikaci Microsoft Excel existuje velké množství funkcí, přičemž některé jsou snadno pochopitelné, jiné vyžadují dlouhé učení a ty první se používají častěji než ty druhé. A přesto je funkce Excel INDIRECT jednou z nich. Tato funkce aplikace Excel neprovádí žádné výpočty ani nevyhodnocuje žádné podmínky či logické testy.

Co je tedy funkce INDIRECT v Excelu a k čemu ji používám? To je velmi dobrá otázka a doufejme, že na ni dostanete vyčerpávající odpověď během několika minut, až dočtete tento návod.

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

    Jak již název napovídá, funkce INDIRECT v aplikaci Excel slouží k nepřímému odkazování na buňky, rozsahy, jiné listy nebo sešity. Jinými slovy, funkce INDIRECT umožňuje vytvořit dynamický odkaz na buňky nebo rozsahy namísto jejich pevného zápisu. Díky tomu můžete změnit odkaz v rámci vzorce, aniž byste měnili vzorec samotný. Tyto nepřímé odkazy se navíc nezmění, když se objeví nějaké nové řádky nebo sloupce.jsou vloženy do pracovního listu nebo když odstraníte existující.

    To vše je možná srozumitelnější na příkladu. Abyste však byli schopni napsat vzorec, i ten nejjednodušší, musíte znát argumenty funkce, že? Pojďme se tedy nejprve krátce podívat na syntaxi funkce Excel INDIRECT.

    Syntaxe funkce INDIRECT

    Funkce INDIRECT v aplikaci Excel vrací odkaz na buňku z textového řetězce. Má dva argumenty, první je povinný a druhý nepovinný:

    INDIRECT(ref_text, [a1])

    ref_text - je odkaz na buňku nebo odkaz na buňku ve formě textového řetězce nebo pojmenovaného rozsahu.

    a1 - je logická hodnota, která určuje, jaký typ reference je obsažen v argumentu ref_text:

    • Pokud je hodnota TRUE nebo je vynechána, je ref_text interpretován jako odkaz na buňku ve stylu A1.
    • Pokud je FALSE, je ref_text považován za odkaz R1C1.

    Ačkoli typ reference R1C1 může být v určitých situacích užitečný, pravděpodobně budete chtít většinu času používat známé reference A1. Každopádně téměř všechny vzorce INDIRECT v tomto kurzu budou používat reference A1, takže druhý argument vynecháme.

    Základní použití funkce INDIRECT

    Abychom pronikli do podstaty funkce, napíšeme si jednoduchý vzorec, který demonstruje, jak se v Excelu používá INDIRECT.

    Předpokládejme, že v buňce A1 je číslo 3 a text A1 do buňky C1. Nyní vložte vzorec =INDIRECT(C1) v jakékoli jiné buňce a uvidíte, co se stane:

    • Funkce INDIRECT se vztahuje k hodnotě v buňce C1, což je A1.
    • Funkce je přesměrována do buňky A1, kde vybere hodnotu, kterou má vrátit, což je číslo 3.

    V tomto příkladu tedy funkce INDIRECT dělá následující. převod textového řetězce na odkaz na buňku .

    Pokud si myslíte, že to má stále velmi malý praktický smysl, vydržte a já vám ukážu několik dalších vzorců, které odhalí skutečnou sílu funkce INDIRECT aplikace Excel.

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

    Jak ukazuje výše uvedený příklad, můžete pomocí funkce INDIRECT aplikace Excel vložit adresu jedné buňky do druhé jako běžný textový řetězec a získat hodnotu 1. buňky odkazem na 2. Tento triviální příklad však není ničím jiným než náznakem možností funkce INDIRECT.

    Při práci s reálnými daty dokáže funkce INDIRECT proměnit libovolný textový řetězec v odkaz, včetně velmi složitých řetězců, které sestavíte pomocí hodnot jiných buněk a výsledků vrácených jinými vzorci aplikace Excel. Nebudeme však předbíhat a projdeme si postupně několik nepřímých vzorců aplikace Excel.

    Vytváření nepřímých odkazů z hodnot buněk

    Jak si jistě pamatujete, funkce INDIRECT aplikace Excel umožňuje použití referenčních stylů A1 a R1C1. Obvykle nelze v jednom listu používat oba styly najednou, mezi oběma typy referencí lze přepínat pouze prostřednictvím funkce Soubor> Možnosti> Vzorce > Zaškrtávací políčko R1C1 . To je důvod, proč uživatelé Excelu jen zřídka uvažují o použití R1C1 jako alternativního přístupu k odkazování.

    Pokud chcete, můžete ve vzorci INDIRECT použít oba typy odkazů na stejném listu. Než se posuneme dále, možná vás bude zajímat rozdíl mezi styly odkazů A1 a R1C1.

    Styl A1 je obvyklý typ odkazu v aplikaci Excel, který odkazuje na sloupec následovaný číslem řádku. Například B2 odkazuje na buňku v průsečíku sloupce B a řádku 2.

    Styl R1C1 je opačný typ odkazu - řádky následované sloupci, na což je potřeba si chvíli zvykat : ) Například R4C1 odkazuje na buňku A4, která je v listu v řádku 4, sloupci 1. Pokud za písmenem není žádná číslice, pak odkazujete na stejný řádek nebo sloupec.

    A nyní se podíváme, jak funkce INDIRECT pracuje s odkazy A1 a R1C1:

    Jak vidíte na obrázku výše, tři různé nepřímé vzorce vracejí stejný výsledek. Už jste přišli na to, proč? Vsadím se, že ano : )

    • Vzorec v buňce D1: =INDIRECT(C1)

    To je nejjednodušší. Vzorec se odkazuje na buňku C1, načte její hodnotu - textový řetězec A2 , převede ji na odkaz na buňku, přejde do buňky A2 a vrátí její hodnotu, která je 222.

    • Vzorec v buňce D3: =INDIRECT(C3,FALSE)

    FALSE ve 2. argumentu znamená, že odkazovaná hodnota (C3) by měla být považována za odkaz na buňku R1C1, tj. číslo řádku následované číslem sloupce. Proto náš vzorec INDIRECT interpretuje hodnotu v buňce C3 (R2C1) jako odkaz na buňku na spojnici řádku 2 a sloupce 1, což je buňka A2.

    Vytváření nepřímých odkazů z hodnot buněk a textu

    Podobně jako jsme vytvářeli odkazy z hodnot buněk, můžete zkombinovat textový řetězec a odkaz na buňku v rámci vzorce INDIRECT, spojeného operátorem spojování (&).

    V následujícím příkladu vzorec: =INDIRECT("B"&C2) vrátí hodnotu z buňky B2 na základě následujícího logického řetězce:

    Funkce INDIRECT spojí prvky v argumentu ref_text - text B a hodnotu v buňce C2 -> hodnota v buňce C2 je číslo 2, což vytváří odkaz na buňku B2 -> vzorec přejde do buňky B2 a vrátí její hodnotu, což je číslo 10.

    Použití funkce INDIRECT s pojmenovanými rozsahy

    Kromě odkazů z buněk a textových hodnot můžete využít funkci INDIRECT aplikace Excel k odkazování na pojmenované rozsahy .

    Předpokládejme, že máte v listu následující pojmenované rozsahy:

    • Jablka - B2:B6
    • Banány - C2:C6
    • Citrony - D2:D6

    Chcete-li vytvořit dynamický odkaz aplikace Excel na některý z výše uvedených rozsahů, stačí zadat jeho název do některé buňky, například G1, a odkazovat na tuto buňku pomocí nepřímého vzorce. =INDIRECT(G1) .

    Nyní můžete udělat další krok a vložit tento INDIREKTNÍ vzorec do jiných funkcí aplikace Excel, abyste mohli vypočítat součet a průměr hodnot v daném pojmenovaném rozsahu nebo zjistit maximální/minimální hodnotu v rámci rozmezí:

    • =SOUČET(NEPŘÍMÝ(G1))
    • =PRŮMĚR(INDIRECT(G1))
    • =MAX(INDIRECT(G1))
    • =MIN(INDIRECT(G1))

    Nyní, když jste získali obecnou představu o tom, jak používat funkci INDIRECT v aplikaci Excel, můžeme experimentovat s výkonnějšími vzorci.

    INDIREKTNÍ vzorec pro dynamický odkaz na jiný pracovní list

    Užitečnost funkce INDIRECT aplikace Excel se neomezuje pouze na vytváření "dynamických" odkazů na buňky. Můžete ji také využít k odkazování na buňky v jiných pracovních listech "za běhu" a zde je návod, jak na to.

    Předpokládejme, že máte nějaká důležitá data na listu 1 a chcete je vytáhnout na list 2. Následující obrázek ukazuje, jak si s tímto úkolem poradí nepřímý vzorec aplikace Excel:

    Rozebereme si vzorec, který vidíte na obrázku, a pochopíme ho.

    Jak víte, obvyklý způsob odkazování na jiný list v aplikaci Excel je zapsání názvu listu následovaného vykřičníkem a odkazem na buňku / rozsah, např. Název listu!Rozsah . Protože název listu často obsahuje mezeru(y), je lepší jej (název, nikoliv mezeru : ) uzavřít do jednoduchých uvozovek, aby nedošlo k chybě, např. "Můj list!"$A$1 .

    A nyní stačí do jedné buňky zadat název listu, do druhé adresu buňky, spojit je do textového řetězce a tento řetězec předat funkci INDIRECT. Nezapomeňte, že v textovém řetězci musíte každý prvek jiný než adresu buňky nebo číslo uzavřít do dvojitých uvozovek a všechny prvky spojit pomocí operátoru spojování (&).

    Vzhledem k výše uvedenému dostaneme následující vzorec:

    INDIRECT("'" & Název listu & "'!" & Buňka, ze které lze čerpat data )

    Vrátíme-li se k našemu příkladu, vložíme název listu do buňky A1 a zadáme adresy buněk ve sloupci B, jak ukazuje obrázek výše. Výsledkem je následující vzorec:

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

    Dbejte také na to, že pokud vzorec kopírujete do více buněk, musíte odkaz na název listu uzamknout pomocí absolutních odkazů na buňky, například $A$1.

    Poznámky

    • Pokud je některá z buněk, které obsahují název a adresu buňky 2. listu (A1 a B1 ve výše uvedeném vzorci), prázdná, váš vzorec Indirect vrátí chybu. Chcete-li tomu zabránit, můžete funkci INDIRECT zabalit do funkce IF:

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

    • Aby vzorec INDIRECT, který odkazuje na jiný list, fungoval správně, měl by být odkazovaný list otevřený, jinak vzorec vrátí chybu #REF. Abyste se této chybě vyhnuli, můžete použít funkci IFERROR, která zobrazí prázdný řetězec, ať už dojde k jakékoli chybě:

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

    Vytvoření dynamického odkazu aplikace Excel na jiný sešit

    Nepřímý vzorec, který odkazuje na jiný sešit aplikace Excel, je založen na stejném přístupu jako odkaz na jiný tabulkový procesor. Kromě názvu listu a adresy buňky musíte pouze zadat název sešitu.

    Pro usnadnění začneme odkazem na jinou knihu obvyklým způsobem (apostrofy se přidávají v případě, že názvy knih a/nebo listů obsahují mezery):

    '[Název_knihy.xlsx]Název_listu'!Rozsah

    Za předpokladu, že název knihy je v buňce A2, název listu v B2 a adresa buňky v C2, dostaneme následující vzorec:

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

    Protože nechcete, aby se buňky obsahující názvy knih a listů při kopírování vzorce do jiných buněk změnily, uzamknete je pomocí absolutních odkazů na buňky, tedy $A$2 a $B$2.

    Nyní můžete snadno napsat vlastní dynamický odkaz na jiný sešit aplikace Excel pomocí následujícího vzoru:

    =INDIRECT("'[" & Název knihy & "]" & Název listu & "'!" & Adresa buňky )

    Poznámka: Sešit, na který se vzorec odkazuje, by měl být vždy otevřený, jinak funkce INDIRECT vyhodí chybu #REF. Jako obvykle vám pomůže se jí vyhnout funkce IFERROR:

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

    Použití funkce INDIRECT aplikace Excel k uzamčení odkazu na buňku

    Za normálních okolností Microsoft Excel mění odkazy na buňky při vkládání nových nebo odstraňování stávajících řádků nebo sloupců v listu. Abyste tomu zabránili, můžete použít funkci INDIRECT pro práci s odkazy na buňky, které by měly zůstat v každém případě zachovány.

    Pro ilustraci rozdílu proveďte následující:

    1. Do libovolné buňky zadejte libovolnou hodnotu, například číslo 20 do buňky A1.
    2. Odkazujte na A1 ze dvou jiných buněk různými způsoby: =A1 a =INDIRECT("A1")
    3. Vložte nový řádek nad řádek 1.

    Vidíte, co se stane? Buňka s se rovná logický operátor stále vrací 20, protože jeho vzorec byl automaticky změněn na =A2. Buňka se vzorcem INDIRECT nyní vrací 0, protože vzorec nebyl při vložení nového řádku změněn a stále odkazuje na buňku A1, která je v současné době prázdná:

    Po této ukázce můžete nabýt dojmu, že funkce INDIRECT je spíše na obtíž než na pomoc. Dobrá, zkusíme to tedy jinak.

    Předpokládejme, že chcete sečíst hodnoty v buňkách A2:A5, což můžete snadno provést pomocí funkce SUMA:

    =SUMA(A2:A5)

    Chcete však, aby vzorec zůstal nezměněn bez ohledu na to, kolik řádků bude smazáno nebo vloženo. Nejzřejmější řešení - použití absolutních odkazů - nepomůže. Chcete-li se ujistit, zadejte vzorec. =SOUČET($A$2:$A$5) v některé buňce, vložte nový řádek, řekněme na řádek 3, a... najděte vzorec převedený na =SOUČET($A$2:$A$6) .

    Samozřejmě, že takováto laskavost aplikace Microsoft Excel bude ve většině případů fungovat dobře. Nicméně mohou nastat scénáře, kdy nechcete, aby se vzorec automaticky měnil. Řešením je použití funkce INDIRECT, například takto:

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

    Protože Excel vnímá "A1:A5" jako pouhý textový řetězec, nikoli jako odkaz na rozsah, neprovede při vložení nebo odstranění řádku (řádků) žádné změny.

    Použití funkce INDIRECT s dalšími funkcemi aplikace Excel

    Kromě funkce SUM se INDIRECT často používá s dalšími funkcemi aplikace Excel, jako jsou například ROW, COLUMN, ADDRESS, VLOOKUP, SUMIF a další.

    Příklad 1. Funkce INDIRECT a ROW

    Funkce ROW se v Excelu poměrně často používá k vrácení pole hodnot. Například můžete použít následující vzorec pro pole (nezapomeňte, že vyžaduje stisknutí kláves Ctrl + Shift + Enter ) k vrácení průměru 3 nejmenších čísel v rozsahu A1:A10:

    =PRŮMĚR(SMALL(A1:A10,ROW(1:3))

    Pokud však do pracovního listu vložíte nový řádek kdekoli mezi řádky 1 a 3, změní se rozsah ve funkci ROW na ROW(1:4) a vzorec vrátí průměr 4 nejmenších čísel namísto 3.

    Abyste tomu zabránili, vložte do funkce ŘÁDEK INDIRECT a vzorec pole zůstane vždy správný bez ohledu na počet vložených nebo odstraněných řádků:

    =PRŮMĚR(SMALL(A1:A10,ROW(INDIRECT("1:3"))))

    Zde je několik dalších příkladů použití INDIRECT a ROW ve spojení s funkcí LARGE: Jak sečíst N největších čísel v rozsahu.

    Příklad 2. Funkce INDIRECT a ADDRESS

    Pomocí funkce INDIRECT aplikace Excel spolu s funkcí ADDRESS můžete získat hodnotu v určité buňce za běhu.

    Jak si možná pamatujete, funkce ADRESA se v aplikaci Excel používá k získání adresy buňky pomocí čísla řádku a sloupce. Například vzorec =ADRESA(1,3) vrátí řetězec $C$1, protože C1 je buňka v průsečíku 1. řádku a 3. sloupce.

    Chcete-li vytvořit nepřímý odkaz na buňku, jednoduše vložte funkci ADDRESS do vzorce INDIRECT takto:

    =INDIRECT(ADRESA(1,3))

    Tento triviální vzorec samozřejmě pouze demonstruje techniku. A zde je několik příkladů, které se mohou ukázat jako opravdu užitečné:

    • Vzorec INDIRECT ADDRESS - jak přepínat řádky a sloupce.
    • VLOOKUP a INDIRECT - jak dynamicky vytáhnout data z různých listů.
    • INDIRECT s INDEX / MATCH - jak dovést vzorec VLOOKUP s rozlišováním velkých a malých písmen k dokonalosti.
    • Excel INDIRECT a COUNTIF - jak použít funkci COUNTIF na nesouvislý rozsah nebo výběr buněk.

    Použití INDIRECT s ověřením dat v aplikaci Excel

    Pomocí funkce INDIRECT aplikace Excel s funkcí Ověřování dat můžete vytvářet kaskádové rozevírací seznamy, které zobrazují různé možnosti v závislosti na tom, jakou hodnotu uživatel vybral v prvním rozevíracím seznamu.

    Jednoduchý závislý rozevírací seznam lze vytvořit velmi snadno. Stačí jen několik pojmenovaných rozsahů pro uložení položek rozevíracího seznamu a jednoduchý příkaz. =INDIRECT(A2) vzorec, kde A2 je buňka zobrazující první rozevírací seznam.

    Chcete-li vytvořit složitější tříúrovňové nabídky nebo rozbalovací seznamy s víceslovnými položkami, budete potřebovat trochu složitější vzorec INDIRECT s vnořenou funkcí SUBSTITUTE.

    Podrobný návod krok za krokem, jak používat INDIRECT s aplikací Excel Data Validation, naleznete v tomto návodu: Jak vytvořit závislý rozbalovací seznam v aplikaci Excel.

    Funkce INDIRECT aplikace Excel - možné chyby a problémy

    Jak bylo ukázáno ve výše uvedených příkladech, funkce INDIRECT je při práci s odkazy na buňky a rozsahy docela užitečná. Ne všichni uživatelé aplikace Excel ji však přijímají s nadšením, a to především proto, že rozsáhlé používání funkce INDIRECT ve vzorcích aplikace Excel vede k nepřehlednosti. Funkci INDIRECT je obtížné kontrolovat, protože buňka, na kterou odkazuje, není konečným místem hodnoty použité ve vzorci,což je skutečně matoucí, zejména při práci s rozsáhlými složitými vzorci.

    Kromě výše uvedeného může INDIRECT, stejně jako každá jiná funkce Excelu, vyhodit chybu, pokud nesprávně použijete argumenty funkce. Zde je seznam nejtypičtějších chyb:

    Excel INDIREKTNÍ #REF! chyba

    Nejčastěji funkce INDIRECT vrací chybu #REF! ve třech případech:

    1. ref_text není platný odkaz na buňku . Pokud parametr ref_text ve vašem vzorci Indirect není platným odkazem na buňku, výsledkem vzorce bude chybová hodnota #REF! Chcete-li předejít možným problémům, zkontrolujte argumenty funkce INDIRECT.
    2. Limit rozsahu je překročen . Pokud argument ref_text vašeho nepřímého vzorce odkazuje na rozsah buněk přesahující řádkový limit 1 048 576 nebo sloupcový limit 16 384, zobrazí se chyba #REF také v aplikacích Excel 2007, 2010 a Excel 2013. Dřívější verze aplikace Excel překročení limitu ignorují a nějakou hodnotu vrátí, i když často ne tu, kterou byste očekávali.
    3. Odkazovaný list nebo sešit je uzavřen. Pokud váš nepřímý vzorec odkazuje na jiný sešit nebo list aplikace Excel, musí být tento jiný sešit / list otevřen, jinak INDIRECT vrátí chybu #REF!.

    Excel INDIRECT #NAME? chyba

    To je nejzřejmější případ, který znamená, že v názvu funkce je nějaká chyba, což nás vede k dalšímu bodu : )

    Použití funkce INDIRECT v jiných než anglických jazycích

    Možná vás bude zajímat, že anglický název funkce INDIRECT byl přeložen do 14 jazyků, včetně:

    • Dánština - INDIREKTE
    • Finština - EPÄSUORA
    • Němčina - INDIREKT
    • Maďarština - INDIREKT
    • Italsky - INDIRETTO
    • Norština - INDIREKTE
    • Polština - ADR.POŚR
    • Španělština - INDIRECTO
    • Švédština - INDIREKT
    • Turecky - DOLAYLI

    Pokud máte zájem o úplný seznam, podívejte se na tuto stránku.

    Častým problémem u neanglických lokalizací není název funkce INDIRECT, ale spíše odlišný název funkce. Regionální nastavení pro Oddělovač seznamu . Ve standardní konfiguraci systému Windows pro Severní Ameriku a některé další země je výchozí nastavení Oddělovač seznamu je čárka. Zatímco v evropských zemích je čárka vyhrazena jako koncovka. Desetinný symbol a Oddělovač seznamu je nastaven na středník.

    Při kopírování vzorce mezi dvěma různými místními jazyky aplikace Excel se proto může zobrazit chybová zpráva " U tohoto vzorce jsme zjistili problém... ", protože Oddělovač seznamu Pokud na tuto chybu narazíte při kopírování některého INDIREKTNÍHO vzorce z tohoto návodu do Excelu, jednoduše nahraďte všechny čárky (,) středníky (;), abyste ji opravili.

    Chcete-li zkontrolovat, jaký oddělovač seznamů a desetinný symbol je v počítači nastaven, otevřete okno. Ovládací panel a přejděte na Oblast a jazyk> Další nastavení .

    Doufejme, že tento návod vám objasnil používání funkce INDIRECT v aplikaci Excel. Nyní, když znáte její silné stránky a omezení, je čas ji vyzkoušet a zjistit, jak vám funkce INDIRECT může zjednodušit vaše úkoly v aplikaci Excel. Děkujeme za přečtení!

    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.