Obsah
Výukový program se zabývá praktickým využitím funkce ISERROR aplikace Excel a ukazuje, jak testovat různé vzorce na výskyt chyb.
Když napíšete vzorec, kterému Excel nerozumí nebo jej nedokáže vypočítat, upozorní vás na problém zobrazením chybové zprávy. Funkce ISERROR vám pomůže chyby zachytit a v případě nalezení chyby poskytne alternativu.
Funkce ISERROR v aplikaci Excel
Funkce ISERROR aplikace Excel zachytí všechny druhy chyb, včetně #CALC!, #DIV/0!, #N/A, #NAME?, #NUM!, #NULL!, #REF!, #VALUE! a #SPILL!. Výsledkem je logická hodnota: TRUE, pokud byla zjištěna chyba, FALSE v opačném případě.
Funkce je k dispozici ve všech verzích aplikace Excel 2000 až 2021 a v aplikaci Excel 365.
Syntaxe funkce ISERROR je jednoduchá:
ISERROR(value)Kde: hodnota je hodnota buňky nebo vzorce, u kterého se mají hledat chyby.
Vzorec ISERROR aplikace Excel
Chcete-li vytvořit vzorec ISERROR v jeho nejjednodušší podobě, zadejte odkaz na buňku, kterou chcete testovat na chyby. Například:
=ISERROR(A2)
V případě nalezení chyby se zobrazí TRUE. Pokud v testované buňce není žádná chyba, zobrazí se FALSE:
Vzorec IF ISERROR v aplikaci Excel
Chcete-li při výskytu chyby vrátit vlastní zprávu nebo provést jiný výpočet, použijte funkci ISERROR spolu s funkcí IF. Obecný vzorec vypadá následovně:
IF(ISERROR( vzorec (...), text_or_calculation_if_error , vzorec ())Přeloženo do lidského jazyka říká: pokud hlavní vzorec vede k chybě, zobrazte zadaný text nebo spusťte jiný výpočet, jinak vraťte normální výsledek vzorce.
Na obrázku níže vydělením celkového počtu množstvím vznikne několik chyb v tabulce. Cena sloupec:
Chcete-li nahradit všechny různé chybové kódy vlastním textem, můžete použít následující vzorec IF ISERROR:
=IF(ISERROR(A2/B2), "Neznámý", A2/B2)
V aplikaci Excel 2007 a novějších verzích lze stejného výsledku dosáhnout pomocí vestavěné funkce IFERROR:
=IFERROR(A2/B2, "Unknown")
Je třeba poznamenat, že vzorec IFERROR běží o něco rychleji, protože provádí výpočet A2/B2 pouze jednou. Zatímco IF ISERROR jej počítá dvakrát - nejprve zjišťuje, zda generuje chybu, a poté znovu, pokud je test FALSE.
IF ISERROR Vzorec VLOOKUP
Použití funkce ISERROR s funkcí VLOOKUP je vlastně zvláštním případem výše popsaného vzorce IF ISERROR. Pokud funkce VLOOKUP nemůže najít hledanou hodnotu nebo selže z jiného důvodu, zobrazíte pomocí této syntaxe vlastní textovou zprávu:
IF(ISERROR(VLOOKUP(...)), " custom_text ", VLOOKUP(...))Pro tento příklad vytáhneme časy z vyhledávací tabulky (D3:E10) do hlavní tabulky (A3:B15). Pokud hodnota vyhledávání (jméno účastníka) v tabulce vyhledávání neexistuje, vrátíme "Not qualified".
=IF(ISERROR(VLOOKUP(A3, $D$3:$E$10, 2, FALSE)), "Nekvalifikovaný", VLOOKUP(A3, $D$3:$E$10, 2, FALSE))
Tip. Pokud chcete zobrazit vlastní text pouze v případě, že se zobrazí hodnota vyhledávání nebyla nalezena (chyba #N/A) a ignoruje ostatní chyby, pak použijte vzorec IFNA VLOOKUP v Excelu 2013 a novějších verzích nebo IF ISNA VLOOKUP ve starších verzích.
IF ISERROR INDEX MATCH vzorec
Při vyhledávání pomocí kombinace INDEX MATCH (nebo vzorce INDEX XMATCH v aplikaci Excel 365) můžete pomocí stejné techniky zachytit a ošetřit případné chyby - funkce ISERROR kontroluje, zda nedošlo k chybě, a při výskytu chyby zobrazí zadaný text.
IF(ISERROR(INDEX ( return_column , MATCH ( lookup_value , lookup_column , 0)))), " custom_text ", INDEX ( return_column , MATCH ( lookup_value , lookup_column , 0)))Předpokládejme, že vyhledávací tabulka má v prvním sloupci časy. Protože VLOOKUP se neumí podívat doleva, použijeme vzorec INDEX MATCH, abychom vytáhli časy ze sloupce D:
=INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0))
A poté jej vnoříte do výše uvedeného obecného vzorce a nahradíte zachycené chyby libovolným textem:
=IF(ISERROR(INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0)), "Not qualified", INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0)))
Poznámka: Stejně jako u vzorce IF ISERROR VLOOKUP má větší smysl zachycovat pouze chyby #N/A a nezakrývat případné problémy se samotným vzorcem. Za tímto účelem zabalte vzorec INDEX MATH do IFNA v Excelu 2013 a vyšších verzích nebo IF ISNA ve starších verzích.
IF ISERROR Ano/Ne vzorec
Ve všech předchozích příkladech IF ISERROR vracel výsledek hlavního vzorce, pokud se nejedná o chybu. Může však fungovat i jinak - vrátit něco, pokud je chyba, a něco jiného, pokud chyba není.
IF(ISERROR( vzorec (...)), " text_if_error ", " text_if_no_error ")Předpokládejme, že v našem ukázkovém souboru dat vás nezajímají přesné časy, chcete pouze vědět, kteří účastníci ze skupiny A jsou kvalifikovaní a kteří ne. K tomu použijte funkci MATCH, která porovná jméno ve sloupci A se seznamem kvalifikovaných účastníků ve sloupci D a výsledky pak doručí do ISERROR. Pokud jméno ve sloupci D není k dispozici (MATCH vrátí chybu), získátefunkce IF zobrazí "Ne" nebo "Nekvalifikovaný". Pokud se název objeví ve sloupci D (bez chyby), vrátí se "Ano" nebo "Kvalifikovaný".
=IF(ISERROR(MATCH(A3, $D$3:$D$10, 0)), "Ne", "Ano" )
Jak spočítat počet chyb
Chcete-li zjistit počet chyb v určitém sloupci, musíte zkontrolovat rozsah, nikoli pouze jednu buňku. Za tímto účelem "nakrmte" cílový rozsah funkcí ISERROR a vrácené logické hodnoty přetvořte na 1 a 0 pomocí dvojitého unárního operátoru (--). Funkce SUM nebo SUMPRODUCT může čísla sečíst a poskytnout konečný výsledek.
Například:
=SUM(--ISERROR(C2:C10))
Upozorňujeme, že tento vzorec funguje jako běžný vzorec pouze v aplikacích Excel 365 a Excel 2021, které podporují dynamická pole. V aplikaci Excel 2019 a starších musíte pro vytvoření vzorce pole stisknout klávesy Ctrl + Shift + Enter (nepište ručně kudrnaté závorky, to nebude fungovat!):
{=SUM(--ISERROR(C2:C10))}
Případně můžete použít funkci SUMPRODUCT, která nativně pracuje s poli, takže vzorec lze ve všech verzích dokončit obvyklou klávesou Enter:
=SUMPRODUCT(--ISERROR(C2:C10))
Rozdíl mezi ISERROR a IFERROR v aplikaci Excel
Funkce ISERROR i IFERROR slouží k zachycení a ošetření chyb v aplikaci Excel. Rozdíl je následující:
- Ve své čisté podobě ISERROR pouze testuje, zda je hodnota chybou, nebo ne. Je k dispozici ve všech verzích aplikace Excel.
- Funkce IFERROR je určena k potlačení nebo zamaskování chyb - při zjištění chyby vrátí jinou hodnotu, kterou zadáte. Je k dispozici v aplikaci Excel 2007 a vyšší.
Na první pohled vypadá IFERROR jako zkrácená alternativa vzorce IF ISERROR. Při bližším pohledu si však můžete všimnout rozdílu:
- IFERROR umožňuje zadat pouze value_if_error . Pokud nedojde k chybě, vrátí vždy výsledek testované hodnoty/vzorce.
- IF ISERROR poskytuje větší flexibilitu a umožňuje řešit obě situace - co se má stát v případě chyby a co v případě, že chyba nenastala.
Pro lepší ilustraci uveďme tyto vzorce:
=IFERROR(A1, "Chyba výpočtu")
=IF(ISERROR(A1), "Chyba výpočtu", A1)
Tyto dva vzorce jsou ekvivalentní - oba kontrolují hodnotu ve vzorci A1 a v případě chyby vracejí "Chyba výpočtu", v opačném případě vracejí hodnotu.
Ale co když chcete provést nějaký výpočet, pokud hodnota v A1 není chybou? To funkce IFERROR neumí. V případě IF ISERROR stačí do posledního argumentu zadat požadovaný výpočet. Například:
=IF(ISERROR(A1), "Chyba výpočtu", A1*2)
Jak vidíte, tato delší varianta vzorce IFERROR, která je často považována za zastaralou, může být stále užitečná :)
Dostupné soubory ke stažení
Příklady vzorců ISERROR (.xlsx soubor)