Důvěřuj, ale prověřuj – funkce pro kontrolu hodnot

calc.png V tomto pokračování se dozvíte, jak učinit vaše vzorce odolnými vůči špatným vstupním hodnotám a jak se vypořádat s chybovými hodnotami některých funkcí.  

Předchozí díly volného seriálu:

V minulých dílech se objevily funkce, jejichž výsledkem, v případě neúspěchu, je některá z chybových hodnot. Např. pokud FIND nebo SEARCH nenaleznou hledaný řetězec, vrátí chybovou hodnotu #VALUE!, se kterou se dále hůře pracuje a hlavně v buňce působí nepřívětivě.

Kontrola výsledku funkce FINDKontrola výsledku funkce FIND

Ve sloupci B jsou vzorce s funkcí FIND bez kontroly jejích výstupních hodnot, takže výsledky jsou čísla pozic hledaného textu v prohledávaném textu, nebo hodnota #VALUE! v případě, že hledaný text není nalezen.

Ve sloupci C je použita funkce ISERR, která kontroluje výsledek jí předaného parametru, kterým je v tomto případě výsledek funkce FIND. Jestliže ISERR zaznamená chybu, vrátí logickou hodnotu TRUE/PRAVDA, jinak FALSE/NEPRAVDA. Jestliže tedy FIND nenalezne hledaný text, jejím výsledkem bude chyba typu #VALUE! a tuto chybu vyhodnotí ISERR jako hodnotu PRAVDA. S tou se pak počítá v podmínce IF(ISERR(FIND());"neobsahuje";"obsahuje"), která v případě chyby vypíše „neobsahuje" a v případě ne-chyby „obsahuje". Výsledek hledání je pak všem na první pohled jasný.

Můžete jít ještě dále a spočítat úspěšná vyhledání - ve vzorcích ve sloupci D budete namísto „neobsahuje" vypisovat nulu a v případě, že byl text nalezen, vypíšete hodnotu jedna. Výsledky pak sečtete (řádek 12) a máte počty úspěšných vyhledání zadaných textů.

Další možností je, že potřebujete pouze potlačit zobrazení hodnot #VALUE!, a přitom chcete ponechat výsledky samotné funkce FIND. Pak použijte vzorec

=IF(ISERR(FIND(A1;A2));"";FIND(A1;A2)) 

který v případě chyby při hledání vloží do buňky prázdný řetězec (buňka bude na pohled prázdná) a v případě úspěšného vyhledání tam vloží výsledek funkce FIND.

Je nutné upozornit, že ISERR umí zachytit všechny chybové hodnoty kromě #N/A - k ní se ISERR záměrně chová, jako by to chyba nebyla, tzn. ISERR(NA()) vrátí NEPRAVDA. Pro testování chyby typu #N/A slouží funkce ISERROR či speciální funkce ISNA.

Funkce =NA() vrací chybovou hodnotu #N/A.

Přehled chyb a jejich testování vidíte v následující tabulce.

Chyby a funkce pro jejich testováníChyby a funkce pro jejich testování

Calc disponuje celou řadou dalších funkcí pro testování hodnot buněk, pomocí kterých je možné předcházet chybovým stavům. To je vhodné zejména při vytváření různých šablon a dokumentů pro opakované použití používajících vzorce. Pokud máte vzorec, který vyžaduje jako vstupní hodnotu číslo, jinak vrátí chybu, použijte funkci ISNUMBER, která vrací PRAVDA, pokud je hodnota číslo. Takže svůj VZOREC zabalíte do podmínky

=IF(ISNUMBER(vstup);VZOREC;"zadejte číslo")

Pokud ve vstupní buňce nebude číslo, výše uvedený vzorec vypíše „zadejte číslo". Obdobně můžete kontrolovat, zda je v buňce text, pomocí ISTEXT, často se hodí funkce ISBLANK pro kontrolu, zda je buňka prázdná nebo ne. Následující tabulka shrnuje výsledky těchto testovacích funkcí.

Přehled výsledků funkcí IS...Přehled výsledků funkcí IS...

Calc má ještě dvě funkce, které tak trochu připomínají výše uvedené - jsou to ISEVEN a ISODD na testování, zda zadaný parametr je sudé (EVEN), resp. liché (ODD) číslo.

Stáhněte si uvedené příklady ve formátu ods: Funkce pro kontrolu hodnot - příklady

(Jako ve škole) Průměr: 1,00 | Hodnotilo: 9
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Tomáš Hanusek

Tomáš Hanusek

 
 
 
woo jaw demo hz