Předchozí díly volného seriálu:
- Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
- Funkce pro práci s textem – spojování, pročištění, vyhledávání
- Možnosti kopírování a vkládání obsahu buněk
- Vkládání a úpravy funkcí pomocí průvodce
- Funkce v OpenOffice.org Calc – síla, kterou je obtížné zkrotit
- Logické funkce 2 – AND, OR
- Logické funkce 1 - funkce IF
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ě.
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í
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í.
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