Tabulka bez ošetření chybového stavu vypadá následovně.
Ve sloupci Výsledek používáme vzorec:
=A2/B2 =A3/B3
- V řádku 2: Zápis dělení bez ošetření chybového stavu s uvedenou číslicí 0 na místě dělitele.
- V řádku 3: Zápis dělení bez ošetření chybového stavu s prázdnou buňkou na místě dělitele.
Tabulka s ošetřením chybového stavu za pomocí funkce pak vzhled vylepšuje.
Ve sloupci Výsledek používáme vzorec:
=IF(B2=0;"";A2/B2) =IF(B3=0;"nelze dělit nulou";A3/B3)
- V řádku 2: Jestliže je B2 rovno 0, pole C2 zůstane prázdné, jinak vyděl A2/B2.
- V řádku 3: Jestliže je B3 rovno 0, zapiš do pole C3 řetězec "nelze dělit nulou", jinak vyděl A3/B3.
Logická funkce IF
Funkce má následující syntaxi:
=IF(podmínka;ano;ne)
Funkce vyhodnotí podmínku a je-li podmínka splněna, vrátí argument ANO. Pokud podmínka splněna není, vrátí argument NE.
Využití funkce je vhodné v těchto situacích:
- Nepřejete si zobrazit chybové hlášení.
- Nepřejete si zobrazit zbytečné výsledky výpočtů, popř. chybová hlášení.
- Přechod mezi různými soustavami.
- Transformace mezi výpočty.
Logická proměnná se v Calcu vyhodnotí jako PRAVDA, pokud se jejím vyhodnocením získá libovolné nenulové číslo, které může být kladné i záporné.
Podmínka je nepravdivá, pokud se jejím vyhodnocením získá nula, nebo je odkazovaná buňka prázdná.
V zápise podmínky se používají operátory =, <, >, <>, >=, <=. Pomocí aritmetických proměnných a relačních operátorů nejsnadněji získáme logické proměnné.
Argument ANO i NE může být číslo, text, odkaz na jinou buňku, funkce nebo vzorec. Vzorec, odkaz na buňku a funkce se píší bez rovnítka a nedávají se do uvozovek.
Pokud je argument ANO vynechán, vrátí funkce argument NE. Pokud je argument NE vynechán a je-li na konci středník, vrátí funkce hodnotu CHYBA:511
, tzn. chybí proměnná - funkce vyžaduje více proměnných, než je zadáno.
Je-li středník vynechán, vrátí funkce logickou hodnotu NEPRAVDA.
Argument může obsahovat další vnořené funkce, které se již zapisují bez rovnítka.
Nepřejete si zobrazit chybové hlášení
Jako příklad uvedeme dělení nulou.
Při dělení dvou nenulových čísel je vše v pořádku – výsledek vrátí podíl těchto čísel. Když však v děliteli bude 0 nebo prázdná buňka, vrátí Calc ve výsledku hodnotu #DIV/0!
- dělení nulou samozřejmě není možné.
Aby k této situaci nedocházelo, tj. nezobrazovala se chybová hodnota #DIV/0!
, použijte logickou funkci IF. Podmínkou ve funkci je zjištění dělitele. Existují dvě možnosti:
- zjistěte, zda buňka obsahuje číslici 0 nebo je prázdná:
=IF(B2=0;"";A2/B2)
=IF(B3=0;"nelze dělit nulou";A3/B3)
- zjistěte, zda je v buňce jiné číslo než číslo nula
V tomto příkladě vrátí funkce prázdný řetězec znaků, když se dělitel B2 rovná 0. Jinak se příklad vypočte. Prázdný řetězec lze nahradit větou "nelze dělit nulou".
=IF(B2<>0;A2/B2;"")
=IF(B3<>0; A3/B3;"nelze dělit nulou")
V tomto příkladě zjišťujete, zda je hodnota v buňce B2 různá od nuly; pokud tomu tak je, funkce se vypočte. Jestliže tomu tak není, zobrazí se prázdný řetězec, nebo místo něj můžete zobrazit textový řetězec "nelze dělit nulou".
Nepřejete si zobrazit zbytečné výsledky výpočtů, popř. chybová hlášení
Na obrázku vidíte běžně používaný způsob tvorby tabulek. Od řádku 5 je ve sloupci D – Celkem zbytečně uveden součet zboží, jelikož kolonka Zboží nebyla vyplněna.
Za použití funkce IF lze zcela snadno dosáhnout již na první pohled úhledné tabulky a zamezit tak zobrazení zbytečných výsledků.
Vzorec kontroluje, zda je hodnota v buňce A2 různá od nuly, pokud tomu tak je, funkce se vypočte, jestliže tomu tak není, zobrazí se prázdný řetězec.
Přechod mezi různými soustavami
Velmi často je třeba vysvětlit význam číselného kódu textem. Využívá se to v různých výpočetních modelech, kde slovní vyjádření výsledku slouží ke snadnější orientaci.
Příklad: Ve škole je zavedeno hodnocení studentů na bodové stupnici 1-100. Výsledná známka se odvíjí od počtu dosažených bodů dle první tabulky.
Druhý obrázek zobrazuje jednotlivé studenty, dosažené body a jejich výslednou známku.
Vzorce, který slouží k výpočtům, jsou následující. Oba vzorce používají vnořenou funkci IF. V prvním případě je v argumentu ANO obsažen textový řetězec výsledné známky.
=IF(C11=0;"Neklasifikován";IF(C11<=37;"Nedostatečný";IF(C11<=56;"Dostatečný";IF(C11<=76;"Dobrý";IF(C11<=88;"Chvalitebný";IF(C11<=100;"Výborný";""))))))
Ve druhém případě je v argumentu ANO uveden odkaz na buňku B z první tabulky. Argument NE obsahuje prázdný řetězec "".
=IF(C11=0;B7;IF(C11<=37;B6;IF(C11<=56;B5;IF(C11<=76;B4;IF(C11<=88;B3;IF(C11<=100;B2;""))))))
Transformace mezi výpočty
Čtvrtou oblastí použití funkce je zajištění vstupního můstku mezi návaznými výpočty. Jeden blok výpočtů vrátí hodnotu, která vstupuje do dalšího bloku výpočtů. Hodnota z prvního bloku však nemůže vstoupit přímo do druhého bloku, neboť dochází k transformaci.
V bloku výpočtů 1 dojde k výsledku (buňka D9). Podmínka je: Jestliže výsledek v buňce D9 bude větší nebo rovný 0 a zároveň menší nebo rovný 10, předej do Bloku výpočtů 2 hodnotu 2 (buňka G4), jestliže bude výsledek menší než 0, předej hodnotu -10 (buňka G5), jinak předej hodnotu 10 (buňka G6). Vzorec:
=IF(AND(D9>=0;D9<=10);G4;IF(D9<0;G5;G6))
Ve vzorci je použita další logická funkce AND, která znamená, že musí platit obě podmínky, aby výsledek vrátil kladnou hodnotu.
Funkce AND a funkce OR bude námětem dalšího pokračování seriálu o funkcích.