Obsah
Tento výukový program Excel INDIRECT vysvetľuje syntax funkcie, jej základné použitie a poskytuje niekoľko príkladov vzorcov, ktoré demonštrujú, ako používať INDIRECT v programe Excel.
V programe Microsoft Excel existuje veľké množstvo funkcií, pričom niektoré sú ľahko pochopiteľné, iné si vyžadujú dlhé učenie a tie prvé sa používajú častejšie ako tie druhé. A predsa, funkcia Excel INDIRECT je jednou z nich. Táto funkcia programu Excel nevykonáva žiadne výpočty, ani nevyhodnocuje žiadne podmienky alebo logické testy.
Čo je teda funkcia INDIRECT v programe Excel a na čo ju používam? To je veľmi dobrá otázka a dúfam, že na ňu dostanete vyčerpávajúcu odpoveď za pár minút, keď dočítate tento návod.
Funkcia INDIRECT programu Excel - syntax a základné použitie
Ako už názov napovedá, funkcia INDIRECT programu Excel sa používa na nepriame odkazy na bunky, rozsahy, iné hárky alebo zošity. Inými slovami, funkcia INDIRECT umožňuje vytvoriť dynamický odkaz na bunky alebo rozsahy namiesto ich pevného zakódovania. Výsledkom je, že môžete zmeniť odkaz v rámci vzorca bez toho, aby ste zmenili samotný vzorec. Okrem toho sa tieto nepriame odkazy nezmenia, keď sa objavia nejaké nové riadky alebo stĺpcesú vložené do pracovného hárka alebo keď odstránite existujúce.
To všetko možno ľahšie pochopíte na príklade. Aby ste však mohli napísať vzorec, aj ten najjednoduchší, musíte poznať argumenty funkcie, však? Poďme sa teda najprv v krátkosti pozrieť na syntax funkcie Excel INDIRECT.
Syntax funkcie INDIRECT
Funkcia INDIRECT v programe Excel vracia odkaz na bunku z textového reťazca. Má dva argumenty, prvý je povinný a druhý nepovinný:
INDIRECT(ref_text, [a1])ref_text - je odkaz na bunku alebo odkaz na bunku vo forme textového reťazca alebo pomenovaného rozsahu.
a1 - je logická hodnota, ktorá určuje, aký typ odkazu obsahuje argument ref_text:
- Ak je TRUE alebo je vynechaný, ref_text sa interpretuje ako odkaz na bunku v štýle A1.
- Ak je FALSE, ref_text sa považuje za odkaz R1C1.
Hoci typ referencie R1C1 môže byť v určitých situáciách užitočný, pravdepodobne budete chcieť väčšinu času používať známe referencie A1. Tak či onak, takmer všetky vzorce INDIRECT v tomto učebnom texte budú používať referencie A1, takže druhý argument budeme vynechávať.
Základné použitie funkcie INDIRECT
Aby sme prenikli do podstaty funkcie, napíšeme jednoduchý vzorec, ktorý demonštruje, ako sa v programe Excel používa INDIRECT.
Predpokladajme, že v bunke A1 máte číslo 3 a text A1 do bunky C1. Teraz vložte vzorec =INDIRECT(C1)
v ktorejkoľvek inej bunke a uvidíte, čo sa stane:
- Funkcia INDIRECT sa vzťahuje na hodnotu v bunke C1, čo je A1.
- Funkcia je presmerovaná do bunky A1, kde vyberie hodnotu, ktorú má vrátiť, a tou je číslo 3.
V tomto príklade teda funkcia INDIRECT robí nasledovné prevod textového reťazca na odkaz na bunku .
Ak si myslíte, že to má stále veľmi malý praktický zmysel, vydržte a ukážem vám niekoľko ďalších vzorcov, ktoré odhalia skutočnú silu funkcie INDIRECT programu Excel.
Ako používať INDIRECT v programe Excel - príklady vzorcov
Ako ukazuje vyššie uvedený príklad, môžete použiť funkciu INDIRECT programu Excel na vloženie adresy jednej bunky do druhej ako bežný textový reťazec a získať hodnotu 1. bunky odkazom na 2. Tento triviálny príklad však nie je ničím iným ako náznakom možností funkcie INDIRECT.
Pri práci so skutočnými údajmi dokáže funkcia INDIRECT premeniť akýkoľvek textový reťazec na odkaz vrátane veľmi zložitých reťazcov, ktoré vytvoríte pomocou hodnôt iných buniek a výsledkov vrátených inými vzorcami programu Excel. Nebudeme však predbiehať voz pred koňa a postupne si prejdeme niekoľko nepriamych vzorcov programu Excel.
Vytváranie nepriamych odkazov z hodnôt buniek
Ako si pamätáte, funkcia Excel INDIRECT umožňuje použitie referenčných štýlov A1 a R1C1. Zvyčajne nemôžete v jednom hárku používať oba štýly naraz, medzi oboma typmi referencií môžete prepínať iba prostredníctvom Súbor> Možnosti> Vzorce > Začiarkavacie políčko R1C1 . To je dôvod, prečo používatelia programu Excel len zriedkakedy uvažujú o použití R1C1 ako alternatívneho prístupu k odkazovaniu.
Vo vzorci INDIRECT môžete v prípade potreby použiť ktorýkoľvek typ referencie na tom istom hárku. Skôr ako sa posunieme ďalej, možno vás bude zaujímať rozdiel medzi štýlmi referencie A1 a R1C1.
Štýl A1 je obvyklý typ odkazu v programe Excel, ktorý odkazuje na stĺpec nasledovaný číslom riadku. Napríklad B2 odkazuje na bunku v priesečníku stĺpca B a riadku 2.
Štýl R1C1 je opačný typ odkazu - riadky nasledované stĺpcami, na čo si treba chvíľu zvykať : ) Napríklad R4C1 odkazuje na bunku A4, ktorá sa nachádza v riadku 4, stĺpci 1 listu. Ak za písmenom nie je žiadne číslo, potom odkazujete na ten istý riadok alebo stĺpec.
A teraz sa pozrime, ako funkcia INDIRECT spracúva odkazy na A1 a R1C1:
Ako vidíte na obrázku vyššie, tri rôzne nepriame vzorce vrátia rovnaký výsledok. Už ste prišli na to, prečo? Stavím sa, že áno : )
- Vzorec v bunke D1:
=INDIRECT(C1)
Toto je najjednoduchšie. Vzorec sa vzťahuje na bunku C1, načíta jej hodnotu - textový reťazec A2 , prevedie ho na odkaz na bunku, prejde do bunky A2 a vráti jej hodnotu, ktorá je 222.
- Vzorec v bunke D3:
=INDIRECT(C3,FALSE)
FALSE v 2. argumente znamená, že s odkazovanou hodnotou (C3) sa má zaobchádzať ako s odkazom na bunku R1C1, t. j. číslo riadku nasledované číslom stĺpca. Preto náš vzorec INDIRECT interpretuje hodnotu v bunke C3 (R2C1) ako odkaz na bunku na spojnici riadku 2 a stĺpca 1, čo je bunka A2.
Vytváranie nepriamych odkazov z hodnôt buniek a textu
Podobne ako sme vytvárali odkazy z hodnôt buniek, môžete kombinovať textový reťazec a odkaz na bunku v rámci vzorca INDIRECT, spojeného operátorom zlučovania (&).
V nasledujúcom príklade vzorec: =INDIRECT("B"&C2) vráti hodnotu z bunky B2 na základe nasledujúceho logického reťazca:
Funkcia INDIRECT spája prvky v argumente ref_text - text B a hodnota v bunke C2 -> hodnota v bunke C2 je číslo 2, ktoré odkazuje na bunku B2 -> vzorec prejde do bunky B2 a vráti jej hodnotu, ktorá je číslo 10.
Používanie funkcie INDIRECT s pomenovanými rozsahmi
Okrem vytvárania odkazov z hodnôt buniek a textu môžete využiť funkciu INDIRECT aplikácie Excel na odkazovanie na pomenované rozsahy .
Predpokladajme, že v hárku máte nasledujúce pomenované rozsahy:
- Jablká - B2:B6
- Banány - C2:C6
- Citróny - D2:D6
Ak chcete vytvoriť dynamický odkaz programu Excel na niektorý z uvedených rozsahov, stačí zadať jeho názov do niektorej bunky, napríklad G1, a odvolať sa na túto bunku pomocou nepriameho vzorca =INDIRECT(G1)
.
A teraz môžete urobiť ďalší krok a tento vzorec INDIRECT vložiť do iných funkcií programu Excel, aby ste vypočítali súčet a priemer hodnôt v danom pomenovanom rozsahu alebo našli maximálnu/minimálnu hodnotu v rámci rozsahu:
=SUM(INDIRECT(G1))
=PRIEMER(INDIRECT(G1))
=MAX(INDIRECT(G1))
=MIN(INDIRECT(G1))
Teraz, keď už máte všeobecnú predstavu o tom, ako používať funkciu INDIRECT v programe Excel, môžeme experimentovať s výkonnejšími vzorcami.
INDIRECT vzorec na dynamické odkazovanie na iný pracovný hárok
Užitočnosť funkcie INDIRECT programu Excel sa neobmedzuje len na vytváranie "dynamických" odkazov na bunky. Môžete ju využiť aj na odkazovanie na bunky v iných pracovných hárkoch "za behu" a tu je návod, ako na to.
Predpokladajme, že máte nejaké dôležité údaje v hárku 1 a chcete ich vytiahnuť do hárku 2. Nasledujúca snímka obrazovky ukazuje, ako môže túto úlohu zvládnuť nepriamy vzorec programu Excel:
Rozoberme si vzorec, ktorý vidíte na snímke obrazovky, a pochopme ho.
Ako viete, bežný spôsob odkazovania na iný hárok v programe Excel je napísanie názvu hárku, za ktorým nasleduje výkričník a odkaz na bunku/rozsah, napr. Názov hárku!Rozsah Keďže názov hárku často obsahuje medzeru(y), radšej ho uzavrite (názov, nie medzeru : ) do jednoduchých úvodzoviek, aby ste predišli chybe, napr. "Môj list!"$A$1 .
A teraz stačí do jednej bunky zadať názov hárka, do druhej adresu bunky, spojiť ich do textového reťazca a tento reťazec odovzdať funkcii INDIRECT. Nezabudnite, že v textovom reťazci musíte každý prvok okrem adresy bunky alebo čísla uzavrieť do dvojitých úvodzoviek a všetky prvky spojiť pomocou operátora spájania (&).
Vzhľadom na vyššie uvedené dostaneme nasledujúci vzor:
INDIRECT("'" & Názov hárku & "'!" & Bunka na načítanie údajov )Ak sa vrátime k nášmu príkladu, názov hárka vložíte do bunky A1 a adresy buniek zadáte do stĺpca B, ako je to znázornené na obrázku vyššie. Výsledkom je nasledujúci vzorec:
INDIRECT("'" & $A$1 & "'!" & B1)
Dávajte pozor aj na to, že ak vzorec kopírujete do viacerých buniek, musíte odkaz na názov hárka uzamknúť pomocou absolútnych odkazov na bunky, napríklad $A$1.
Poznámky
- Ak je niektorá z buniek, ktoré obsahujú názov a adresu bunky 2. listu (A1 a B1 vo vyššie uvedenom vzorci), prázdna, váš vzorec Indirect vráti chybu. Ak tomu chcete zabrániť, môžete funkciu INDIRECT zabaliť do funkcie IF:
IF(OR($A$1="",B1=""), "", INDIRECT("'" & $A$1 & "'!" & B1))
- Aby vzorec INDIRECT, ktorý odkazuje na iný hárok, fungoval správne, mal by byť odkazovaný hárok otvorený, inak vzorec vráti chybu #REF. Ak sa chcete vyhnúť chybe, môžete použiť funkciu IFERROR, ktorá zobrazí prázdny reťazec, nech už sa vyskytne akákoľvek chyba:
IFERROR(INDIRECT("'" & $A$1 & "'!" &B1), "")
Vytvorenie dynamického odkazu programu Excel na iný zošit
Nepriamy vzorec, ktorý odkazuje na iný zošit programu Excel, je založený na rovnakom prístupe ako odkaz na iný tabuľkový procesor. Okrem názvu hárka a adresy bunky musíte uviesť len názov zošita.
Aby sme si to uľahčili, začneme odkazom na inú knihu obvyklým spôsobom (apostrofy sa pridávajú v prípade, že názvy vašich kníh a/alebo listov obsahujú medzery):
'[Book_name.xlsx]Sheet_name'!Rozsah
Za predpokladu, že názov knihy je v bunke A2, názov hárka je v bunke B2 a adresa bunky je v bunke C2, dostaneme nasledujúci vzorec:
=INDIRECT("'[" & $A$2 & "]" & $B$2 & "'!" & C2)
Keďže nechcete, aby sa pri kopírovaní vzorca do iných buniek zmenili bunky obsahujúce názvy knihy a hárka, uzamknete ich pomocou absolútnych odkazov na bunky, teda $A$2 a $B$2.
A teraz môžete ľahko napísať vlastný dynamický odkaz na iný zošit programu Excel pomocou nasledujúceho vzoru:
=INDIRECT("'[" & Názov knihy & "]" & Názov listu & "'!" & Adresa bunky )Poznámka: Zošit, na ktorý sa váš vzorec vzťahuje, by mal byť vždy otvorený, inak funkcia INDIRECT vyhodí chybu #REF. Ako zvyčajne, funkcia IFERROR vám môže pomôcť vyhnúť sa jej:
=IFERROR(INDIRECT("'[" & A2 & "]" & $A$1 & "'!" & B1), "")
Použitie funkcie INDIRECT programu Excel na uzamknutie odkazu na bunku
Za normálnych okolností Microsoft Excel mení odkazy na bunky, keď do hárka vkladáte nové alebo odstraňujete existujúce riadky alebo stĺpce. Aby ste tomu zabránili, môžete použiť funkciu INDIRECT na prácu s odkazmi na bunky, ktoré by mali v každom prípade zostať nedotknuté.
Na ilustráciu tohto rozdielu vykonajte nasledujúce kroky:
- Do ľubovoľnej bunky zadajte ľubovoľnú hodnotu, napríklad číslo 20 do bunky A1.
- Odkazujte na A1 z dvoch ďalších buniek rôznymi spôsobmi:
=A1
a=INDIRECT("A1")
- Vložte nový riadok nad riadok 1.
Vidíte, čo sa stane? sa rovná Logický operátor stále vracia 20, pretože jeho vzorec bol automaticky zmenený na =A2. Bunka so vzorcom INDIRECT teraz vracia 0, pretože vzorec nebol zmenený pri vložení nového riadku a stále sa vzťahuje na bunku A1, ktorá je momentálne prázdna:
Po tejto ukážke môžete nadobudnúť dojem, že funkcia INDIRECT je skôr na obtiaž ako na pomoc. Dobre, skúsme to inak.
Predpokladajme, že chcete zrátať hodnoty v bunkách A2:A5, čo môžete ľahko urobiť pomocou funkcie SUM:
=SUM(A2:A5)
Chcete však, aby vzorec zostal nezmenený bez ohľadu na to, koľko riadkov sa vymaže alebo vloží. Najzrejmejšie riešenie - použitie absolútnych odkazov - nepomôže. Ak sa chcete uistiť, zadajte vzorec =SUM($A$2:$A$5)
do niektorej bunky, vložte nový riadok, napríklad na riadok 3, a... nájdite vzorec prevedený na =SUM($A$2:$A$6)
.
Samozrejme, takáto láskavosť programu Microsoft Excel bude vo väčšine prípadov fungovať dobre. Napriek tomu môžu nastať scenáre, keď nechcete, aby sa vzorec automaticky menil. Riešením je použitie funkcie INDIRECT, napríklad takto:
=SUM(INDIRECT("A2:A5"))
Keďže Excel vníma "A1:A5" ako obyčajný textový reťazec, a nie ako odkaz na rozsah, pri vkladaní alebo odstraňovaní riadkov nevykoná žiadne zmeny.
Používanie INDIRECT s inými funkciami programu Excel
Okrem funkcie SUM sa INDIRECT často používa aj s inými funkciami programu Excel, ako sú napríklad ROW, COLUMN, ADDRESS, VLOOKUP, SUMIF a ďalšie.
Príklad 1. Funkcie INDIRECT a ROW
Funkcia ROW sa v programe Excel často používa na vrátenie poľa hodnôt. Napríklad môžete použiť nasledujúci vzorec na vrátenie poľa (nezabudnite, že vyžaduje stlačenie klávesovej skratky Ctrl + Shift + Enter ) na vrátenie priemeru 3 najmenších čísel v rozsahu A1:A10:
=PRIEMER(SMALL(A1:A10,ROW(1:3))
Ak však do pracovného hárka vložíte nový riadok kdekoľvek medzi riadkami 1 a 3, rozsah vo funkcii ROW sa zmení na ROW(1:4) a vzorec vráti priemer 4 najmenších čísel namiesto 3.
Ak tomu chcete zabrániť, vložte do funkcie ROW (riadok) funkciu INDIRECT a vzorec poľa zostane vždy správny bez ohľadu na počet vložených alebo odstránených riadkov:
=PRIEMER(SMALL(A1:A10,ROW(INDIRECT("1:3"))))
Tu je niekoľko ďalších príkladov použitia INDIRECT a ROW v spojení s funkciou LARGE: Ako zrátať N najväčších čísel v rozsahu.
Príklad 2. Funkcie INDIRECT a ADDRESS
Na získanie hodnoty v určitej bunke môžete použiť funkciu INDIRECT programu Excel spolu s funkciou ADDRESS.
Ako si možno pamätáte, funkcia ADRESA sa v programe Excel používa na získanie adresy bunky pomocou čísla riadku a stĺpca. =ADDRESS(1,3)
vráti reťazec $C$1, pretože C1 je bunka v priesečníku 1. riadku a 3. stĺpca.
Ak chcete vytvoriť nepriamy odkaz na bunku, jednoducho vložte funkciu ADDRESS do vzorca INDIRECT takto:
=INDIRECT(ADRESA(1,3))
Samozrejme, tento triviálny vzorec len demonštruje túto techniku. A tu je niekoľko príkladov, ktoré sa môžu ukázať ako skutočne užitočné:
- Vzorec INDIRECT ADDRESS - ako prepínať riadky a stĺpce.
- VLOOKUP a INDIRECT - ako dynamicky ťahať údaje z rôznych hárkov.
- INDIRECT s INDEX / MATCH - ako doviesť vzorec VLOOKUP s rozlišovaním veľkých a malých písmen k dokonalosti.
- Excel INDIRECT a COUNTIF - ako používať funkciu COUNTIF na nesúvislý rozsah alebo výber buniek.
Používanie INDIRECT s overovaním údajov v programe Excel
Pomocou funkcie INDIRECT programu Excel s funkciou Overenie údajov môžete vytvoriť kaskádové rozbaľovacie zoznamy, ktoré zobrazujú rôzne možnosti v závislosti od toho, akú hodnotu používateľ vybral v prvom rozbaľovacom zozname.
Vytvorenie jednoduchého závislého rozbaľovacieho zoznamu je naozaj jednoduché. Stačí len niekoľko pomenovaných rozsahov na uloženie položiek rozbaľovacieho zoznamu a jednoduchý =INDIRECT(A2)
vzorec, kde A2 je bunka zobrazujúca prvý rozbaľovací zoznam.
Ak chcete vytvoriť zložitejšie trojúrovňové ponuky alebo rozbaľovacie zoznamy s viacslovnými položkami, budete potrebovať trochu zložitejší vzorec INDIRECT s vnorenou funkciou SUBSTITUTE.
Podrobný návod krok za krokom, ako používať INDIRECT s programom Excel Data Validation, nájdete v tomto návode: Ako vytvoriť závislý rozbaľovací zoznam v programe Excel.
Funkcia Excel INDIRECT - možné chyby a problémy
Ako sme si ukázali v uvedených príkladoch, funkcia INDIRECT je pri práci s odkazmi na bunky a rozsah celkom užitočná. Nie všetci používatelia programu Excel ju však s nadšením prijímajú najmä preto, že rozsiahle používanie funkcie INDIRECT vo vzorcoch programu Excel vedie k neprehľadnosti. Funkciu INDIRECT je ťažké skontrolovať, pretože bunka, na ktorú odkazuje, nie je konečným miestom hodnoty použitej vo vzorci,čo je naozaj dosť mätúce, najmä pri práci s veľkými zložitými vzorcami.
Okrem vyššie uvedeného, podobne ako každá iná funkcia programu Excel, aj funkcia INDIRECT môže vyhodiť chybu, ak nesprávne použijete argumenty funkcie. Tu je zoznam najtypickejších chýb:
Chyba programu Excel INDIRECT #REF!
Najčastejšie funkcia INDIRECT vracia chybu #REF! v troch prípadoch:
- ref_text nie je platný odkaz na bunku . Ak parameter ref_text vo vašom nepriamom vzorci nie je platným odkazom na bunku, vzorec bude mať za následok chybovú hodnotu #REF! Aby ste predišli možným problémom, skontrolujte argumenty funkcie INDIRECT.
- Limit rozsahu je prekročený Ak argument ref_text vášho nepriameho vzorca odkazuje na rozsah buniek presahujúci limit riadkov 1 048 576 alebo limit stĺpcov 16 384, dostanete chybu #REF aj v aplikáciách Excel 2007, 2010 a Excel 2013. Skoršie verzie aplikácie Excel prekročenie limitu ignorujú a vrátia nejakú hodnotu, hoci často nie tú, ktorú by ste očakávali.
- Odkazovaný hárok alebo zošit je zatvorený. Ak váš nepriamy vzorec odkazuje na iný zošit alebo hárok programu Excel, musí byť tento iný zošit/ hárok otvorený, inak INDIRECT vráti chybu #REF!.
Chyba programu Excel INDIRECT #NAME?
Toto je najzrejmejší prípad, ktorý naznačuje, že v názve funkcie je nejaká chyba, čo nás vedie k ďalšiemu bodu : )
Používanie funkcie INDIRECT v iných ako anglických jazykoch
Možno vás bude zaujímať, že anglický názov funkcie INDIRECT bol preložený do 14 jazykov vrátane:
|
|
Ak máte záujem o úplný zoznam, pozrite si túto stránku.
Častým problémom pri neanglických lokalizáciách nie je názov funkcie INDIRECT, ale skôr odlišné Regionálne nastavenia pre Oddeľovač zoznamu V štandardnej konfigurácii systému Windows pre Severnú Ameriku a niektoré ďalšie krajiny je predvolená Oddeľovač zoznamu je čiarka. Zatiaľ čo v európskych krajinách je čiarka vyhradená ako Desatinný symbol a Oddeľovač zoznamu je nastavený na stredník.
V dôsledku toho sa pri kopírovaní vzorca medzi dvoma rôznymi miestnymi jazykmi programu Excel môže zobraziť chybové hlásenie " Pri tomto vzorci sme zistili problém... ", pretože Oddeľovač zoznamu Ak narazíte na túto chybu pri kopírovaní niektorého INDIRECT vzorca z tohto návodu do vášho Excelu, jednoducho nahraďte všetky čiarky (,) stredníkmi (;), aby ste to opravili.
Ak chcete skontrolovať, aký oddeľovač zoznamov a desatinný symbol sú nastavené vo vašom počítači, otvorte Ovládací panel a prejdite na stránku Región a jazyk> Ďalšie nastavenia .
Dúfame, že tento návod vám objasnil používanie funkcie INDIRECT v programe Excel. Teraz, keď poznáte jej silné stránky a obmedzenia, je čas vyskúšať ju a zistiť, ako vám funkcia INDIRECT môže zjednodušiť úlohy programu Excel. Ďakujeme za prečítanie!