chyba“ Circular dependency detected “ v Tabulkách Google je velmi častá chyba, ke které může dojít při použití téměř jakéhokoli vzorce. Když se v tabulce Google zobrazí chyba detekce kruhové závislosti, znamená to, že váš vzorec odkazuje na rozsah, který obsahuje samotný vzorec, nebo jinými slovy, když je vstup vzorce závislý na výstupu.
Chcete-li opravit chybu zjištěnou kruhovou závislostí v Tabulkách Google, proveďte některou z následujících změn tabulky:
- přesuňte vzorec do jiné buňky, která není obsažena v rozsahu(rozsazích), na který vzorec odkazuje
- , nebo upravte odkaz ve vzorci tak, aby neodkazoval na rozsah, který obsahuje samotný vzorec
chyby kruhové závislosti mohou také nastat, když dva vzorce odkazují na rozsah, ve kterém se nachází druhý vzorec, i když vzorec neodkazuje na sebe (tj. na své vlastní umístění). Stejným způsobem, že vstup jednoho vzorce nemůže být závislý na datech, která jsou určena jeho vlastním výstupem, nemohou být dva vzorce současně závislé na výstupu druhého. To může způsobit matoucí situaci, kdy jeden nesprávný vzorec způsobí dvě chyby vzorce.
v tomto článku projdu několik různých příkladů toho, jak byste mohli zaznamenat tuto chybu zjištěnou v kruhovém závislosti v Tabulkách Google, a také vám ukážu, jak opravit chybu v každé situaci.
když v tabulce dojde k chybě kruhové závislosti, buňka, která obsahuje chybu vzorce, zobrazí malý červený trojúhelník v pravém horním rohu buňky a text buňky řekne: „#REF!“.
když umístíte kurzor na buňku, která má tuto chybu, objeví se okno, které zobrazí následující zprávu, jak je znázorněno na obrázku níže:
“ zjištěna kruhová závislost. Chcete-li vyřešit iterativní výpočet, viz soubor>nastavení tabulky.“
obvykle nebudete muset skutečně upravovat nastavení tabulky, abyste tuto chybu opravili, protože ve většině případů je chyba vyřešena úpravou odkazů na vzorce a umístění, ve kterém se vzorec nachází.
pokud je váš vzorec uvnitř rozsahu, na který odkazuje, znamená to, že vstup vzorce je „závislý“ na výstupu, který nelze vypočítat, a způsobuje chybu.
zde je analogie, která pomáhá vysvětlit chybu. To je něco jako kdyby jste dostali následující matematický problém:
Otázka 1: vydělte 10 odpovědí na otázku 1.
to není možné vyřešit, protože výstup/odpověď nelze znát dříve, než je problém skutečně vyřešen.
nebo v případě dvou vzorců, které odkazují na výstup/umístění toho druhého, je zde další analogie. Je to jako dostat dva následující matematické problémy:
Otázka 1: Jaká je odpověď na otázku 2?
Otázka 2: Jaká je odpověď na otázku 1?
opět to nelze vyřešit. Odpověď na každou otázku závisí na druhé, což způsobuje, že vaše mysl běží v kruzích … odtud fráze „kruhová závislost“.
nedovolte, abyste se cítili zmateni, protože to je to, že tato logika způsobuje chybu. Vše, co potřebujete vědět, je, proč se to stane, a jak to opravit.
pojďme tedy projít některé skutečné příklady řešení této chyby „circular dependency detected“ v tabulce Google.
jak opravit chybu zjištěné kruhové závislosti
podívejme se na nejjednodušší příklad chyby zjištěné kruhové závislosti.
níže obrázek ukazuje vzorec, který jednoduše odkazuje na jednu buňku. Problém je však v tom, že buňka, na kterou vzorec odkazuje, je buňka, do které je vzorec vložen (vzorec v buňce A1 odkazuje na buňku A1).
jak vidíte, způsobilo to chybu kruhové závislosti.
následující vzorec způsobí chybu při zadání do buňky A1:
=A1
Chcete-li chybu opravit, můžeme buď přesunout vzorec do jiné buňky, nebo změnit odkaz ve vzorci tak, aby odkazoval na jinou buňku.
v tomto případě změníme odkaz na buňku B1.
jak vidíte na obrázku níže, toto nastavení opravilo chybu kruhové závislosti.
následující vzorec byl upraven a řeší chybu:
=B1
nyní buňka A1 zobrazí text, který je v buňce B1.
Oprava kruhové závislosti při sčítání
běžná situace, kdy můžete zaznamenat chybu „zjištěná kruhová závislost“, je při sčítání v Tabulkách Google. K tomu dojde nejčastěji, když je váš součet vzorec ve stejném sloupci, na který odkazuje, a když odkaz na vzorec zachycuje celý sloupec.
obrázek níže ukazuje jednoduchý vzorec součtu, který se pokouší sečíst čísla v buňkách A1 až A5.
ale jak vidíte, vzorec součtu odkazuje na celý sloupec (A). Vzhledem k tomu, že vzorec součtu je zadán do buňky ve sloupci a (A6), způsobí to chybu detekovanou kruhovou závislostí.
následující vzorec způsobí chybu při zadání kdekoli ve sloupci a:
=SUM (A1:V)
Chcete-li tuto chybu opravit, upravíme odkaz ve vzorci tak, aby shrnul pouze hodnoty v buňkách nad ním.
takže spíše než se snažit shrnout celý sloupec, označíme koncový řádek v odkazu (řádek, který je nad součtovým vzorcem).
Chcete-li to provést, jednoduše změňte rozsah součtu na A1:A5.
tím se opravuje chyba kruhové závislosti, jak je znázorněno na obrázku níže.
následující vzorec byl upraven a řeší chybu:
=součet (A1:A5)
nyní součet vzorec na obrázku výše, úspěšně sčítá buňky A1 až A5. (1+2+3+4+5=15)
Oprava kruhové závislosti při filtrování
v posledním příkladu jsme museli upravit řádky v odkazu na vzorec, abychom opravili chybu kruhové závislosti, ale podívejme se na příklad, kde upravíme sloupce v odkazu, abychom chybu vyřešili.
v tomto příkladu řekněme, že máme seznam školních potřeb a jejich ceny zadané do tabulky a chceme data filtrovat pomocí vzorce tak, aby se zobrazil seznam položek, které stojí více než 1$.
jak můžete vidět na obrázku níže, vzorec filtru má chybu“ circular dependency detected“. To je způsobeno odkazem na zdrojový rozsah, který je o jeden sloupec příliš široký (vzhledem k tomu, kde byl umístěn vzorec filtru).
pokud vzorec odkazuje na rozsah A2: D, který obsahuje sloupec D, vzorec nelze umístit do sloupce D.
následující vzorec způsobí chybu při zadání do buňky D2:
=filtr(A2:D, C2:C>1)
Chcete-li opravit chybu zobrazenou na obrázku výše, změňte rozsah, který odkazuje na zdrojová data z A2:D, na A2:C.
po provedení této úpravy je chyba opravena a vzorec filtru funguje správně.
následující vzorec byl upraven a řeší chybu:
= filtr (A2: C, C2:C>1)
nyní školní potřeby jsou filtrovány pro zobrazení seznamu položek, které stojí více než $1.
tento obsah byl původně vytvořen a napsán SpreadsheetClass.com
Oprava kruhové závislosti pomocí příkazu if / then
nyní se podívejme na složitější příklad, který by se mohl stát každému, kdo používá vzorce ve svých tabulkách. V tomto příkladu existují dva různé vzorce, které interagují, a protože jeden z nich byl nastaven nesprávně, oba zobrazují chybu, protože každý z nich odkazuje na sebe (závisí na).
(pro více vysvětlení, proč k tomu dochází, viz horní část tohoto článku)
když dojde k chybě, jako je ta, která je zobrazena na obrázku níže, může být někdy obtížné určit, který vzorec má chybu, kvůli dvojité chybě, kterou způsobuje. Stejně jako v každém případě řešení problémů … nejlepší věc, kterou musíte udělat, je začít od začátku a sledovat cestu přes data / systém, dokud nenajdete chybu.
zde je tedy scénář v tomto příkladu: sloupec a označuje dokončení úkolu s 1 a 0. vzorce ve sloupci B měly odkazovat na data ve sloupci A a zobrazovat text „Ano“ nebo „ne“, v závislosti na tom, zda každá buňka ve sloupci a měla číslo 1 nebo číslo 0. Poté sloupec C odkazuje na buňky ve sloupci B a zobrazuje slova „dokončit“ nebo „nedokončit“ v závislosti na tom, zda každá buňka ve sloupci B říká ano nebo ne.
Stručně řečeno, pokud buňka A3 obsahuje číslo 1, pak by buňka B3 měla říkat „Ano“ a buňka C3 by měla říkat „kompletní“.
ale problém je v tom, že vzorec v buňce B3 … místo toho, aby odkazoval na 1 a 0 ve sloupci a, tvůrce listu udělal chybu a odkazoval na sloupec C (který zase odkazuje zpět na něj). To vytváří chybu kruhové závislosti v obou vzorcích, i když technicky byl pouze jeden ze vzorců nastaven nesprávně.
tento typ mixu je běžný při použití mnoha vzorců ve vašich listech, a to zejména, když jste vytvářeli celý den a jste unavení.
Chcete-li opravit tento vzorec, který opraví obě chyby kruhové závislosti, postupujte podle pokynů uvedených pod obrázkem.
následující vzorec způsobuje chybu při zadání do buňky B3, kvůli jinému vzorci v buňce C3, který odkazuje na buňku B3:
= IF (C3= „kompletní“, „ano“, „ne“)
v tomto případě je pro opravu chyby více než jen změna odkazu ve vzorci, protože celý vzorec byl omylem napsán nesprávně. Nezapomeňte tedy, že vzorce ve sloupci B by měly zobrazovat slovo “ ano „v každém řádku / buňce, pokud je v sousedních buňkách ve sloupci a číslo 1 (a slovo „Ne“, pokud je v sousední buňce 0).
opravená logika vzorce v buňce B3 je následující: Pokud se buňka A3 rovná 1, Zobrazí se slovo “ ano „a pokud ne, zobrazí se slovo „ne“.
následující vzorec byl upraven a řeší chybu:
= IF (A3=1, „ano“, „ne“)
nyní oba vzorce fungují správně a obě chyby kruhové závislosti byly opraveny současně opravou jednoho vzorce.
nyní sloupec B označuje sloupec A a poté sloupec B označuje sloupec C, jak by měl být. Vzorce již nejsou současně závislé na výstupu toho druhého.
Opravte chybu kruhové závislosti při odkazu na jinou kartu
dalším velmi běžným způsobem, jak narazit na chybu „zjištěná kruhová závislost“, je, když odkazujete na jinou kartu ve vzorci a zapomenete do odkazu zahrnout název karty.
níže uvedené údaje ukazují seznam oděvních předmětů a jejich velikosti uvedené v tabulce. Chceme filtrovat data pomocí vzorce na jiné kartě, abychom zobrazili pouze položky, které mají velikost „střední“.
obrázek níže ukazuje vzorec filtru, který je zadán v buňce A2, na jiné kartě, než je ta, která obsahuje výše uvedená zdrojová data.
problém je v tom, že při zadávání vzorce byl vynechán název karty.
protože zdrojový rozsah je A2: B a vzorec je v buňce A2, znamená to, že vzorec odkazuje na sebe. Nebo jinými slovy, buňka, do které je vzorec zadán, je v rozsahu, na který se vzorec vztahuje. To způsobí chybu kruhové závislosti.
následující vzorec způsobuje chybu při zadání do buňky A2:
=filtr(A2:B, B2: B= „Střední“)
Chcete-li tuto chybu opravit, jednoduše přidejte název karty do odkazů ve vzorci filtru.
odkaz na zdrojový rozsah bude „další karta“!A2: B (apostrofy musí být přidány před a za odkaz na název karty, pokud je v názvu karty mezera).
následující vzorec byl upraven a řeší chybu:
= filtr (‚další karta‘!A2: B, „Další Karta“!B2: B= „Střední“)