IF
Funkce IF vrátí jednu ze dvou hodnot v závislosti na tom, zda má zadaný výraz po vyhodnocení logickou hodnotu PRAVDA nebo NEPRAVDA.
IF(logický-výraz; pokud-pravda; pokud-nepravda)
logický-výraz: Jakýkoli logický výraz. Logický-výraz může obsahovat jakýkoli výraz, jehož výsledkem je logická hodnota. Pokud je výraz hodnocen jako číslo, bude 0 vyhodnocena jako NEPRAVDA a ostatní čísla jako PRAVDA.
pokud-pravda: Hodnota vrácená, pokud má logický-výraz hodnotu PRAVDA. Argument pokud-pravda může obsahovat hodnotu libovolného typu. Je-li argument pokud-pravda vynechán (je zadána čárka bez hodnoty) a logický-výraz má hodnotu PRAVDA, funkce IF vrátí hodnotu 0.
pokud-nepravda: Volitelný argument, který slouží k zadání hodnoty vrácené v případě, že má logický-výraz hodnotu NEPRAVDA. Argument pokud-nepravda může obsahovat hodnotu libovolného typu. Je-li argument pokud-nepravda vynechán (je zadána čárka bez hodnoty) a logický-výraz má hodnotu NEPRAVDA, funkce IF vrátí hodnotu 0. Jestliže je argument pokud-nepravda zcela vynechán (po hodnotě pokud-pravda nenásleduje čárka) a logický-výraz má hodnotu NEPRAVDA, vrátí funkce IF hodnotu NEPRAVDA.
Poznámky
Jeden nebo oba výrazy pokud-pravda a pokud-nepravda mohou obsahovat další funkce IF (často označované pojmem vnořené funkce IF).
Použití funkce IF k jednoduchému porovnávání |
---|
Následující tabulka zobrazuje jednoduchý způsob sledování známek studentů. |
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | Student | Výsledek testu 1 | Výsledek testu 2 | Konečný výsledek | Hodnocení známkou | Konečné hodnocení |
2 | 1 | 56 | 59 | 59 | F | Neprospěl |
3 | 2 | 75 | 84 | 84 | B | Prospěl |
4 | 3 | 100 | 93 | 100 | A | Prospěl |
Pomocí funkce IF můžete provést jednoduché porovnání těchto údajů. Funkci IF lze použít například těmito způsoby: |
Vrácení textové hodnoty na základě kritérií: V tomto vzorci byly použity následující argumenty:
Pokud 1. student v testu dosáhl 60 nebo více bodů, přiřadí tento vzorec výsledek "Prospěl"; v opačném případě se vrátí výsledek "Neprospěl". |
Vrácení číselné hodnoty na základě kritérií: V tomto vzorci byly použity následující argumenty:
Tento vzorec vypočítá konečný výsledek jako lepší ze dvou výsledků testu a lze ho snadno použít pro kteréhokoli jiného studenta ve výše uvedené tabulce úpravou odkazů na buňky tak, aby odpovídaly výsledkům správného studenta. |
Použití vnořené funkce IF k ověření více podmínek: Pokud alespoň v jednom z testů dosáhl student 60 nebo více bodů, přiřadí tento vzorec výsledek "Prospěl". Výše uvedený vzorec přiřazuje hodnocení známkou na základě konečného výsledku studenta. Poznámka: U vnořených funkcí IF je pořadí porovnávání důležité, protože vzorec se zastaví po prvním pravdivém příkazu. Pokud byste například chtěli do vzorce pro hodnocení známkou přidat novou podmínku "nepokusil se", když je počet bodů dosažených studentem 0, musíte ji přidat jako první podmínku. Přidáte-li ji na konec, vrátí se "5", i když je počet dosažených bodů 0, protože už byl vyhodnocen jako menší než 60. Proto také pro hodnocení známkou 1 není nutný samostatný if-výraz; není-li studentův výsledek 2, nebyla ani žádná jiná známka a hodnocení musí být známka 1. |
Vyzkoušejte to |
---|
Chcete-li se seznámit s použitím funkce IF v tabulce Numbers, vytvořte novou tabulku pomocí šablony „Klasifikační sešit“. Odstraňte v tabulce Přehled třídy některé jméno a podívejte se, jak se změní hodnota ve sloupci „Známka“. Seznamte se s funkcí použitou ve sloupci „Známka“. |
Použití funkce IF v kombinaci s jinými funkcemi |
---|
Následující vzorec v kombinaci s funkcí ISBLANK umožní zjistit, zda je určitá buňka prázdná. V tomto vzorci byly použity následující argumenty:
Pro složitější ověřování lze funkci IF kombinovat s funkcí AND, OR a NOT. |
Funkce IFS poskytuje další možnosti |
---|
Funkci IFS lze použít k vyhodnocení řady výrazů a vrácení hodnoty na základě první podmínky, která je pravdivá, a nahradit tak několik vnořených příkazů IF. |
Další příklady |
---|
Vzorec =IF(A5>=0; "Nezáporné"; "Záporné") vrátí text „Nezáporné“, pokud buňka A5 obsahuje číslo větší nebo rovné nule, popř. jinou než numerickou hodnotu. Pokud buňka A5 obsahuje hodnotu menší než 0, vzorec vrátí hodnotu „Záporné“. Vzorec =IF(A5<>=0; "Nenulové"; "Nulové") vrátí text „Nenulové“, pokud buňka A5 obsahuje číslo, které není nula. Pokud buňka A5 obsahuje 0, vzorec vrátí hodnotu „Nulové“. Vzorec =IF(IFERROR(OR(ISEVEN(B4+B5); ISODD(B4+B5)); NEPRAVDA); "Všechna čísla"; "Jen některá čísla") vrátí text „Všechna čísla“, pokud buňky B4 a B5 obsahují čísla. V ostatních případech vrátí text „Jen některá čísla“. Tohoto výsledku se dosáhne testováním, zda je součet buněk sudý nebo lichý. Pokud buňka neobsahuje číslo, funkce EVEN a ODD vrátí chybu a funkce IFERROR vrátí hodnotu NEPRAVDA. V ostatních případech vrátí hodnotu PRAVDA, protože výsledek jedné z funkcí EVEN nebo ODD je PRAVDA. Pokud tedy některá z buněk B4 nebo B5 neobsahuje číslo nebo logickou hodnotu, funkce IF vrátí výraz pokud-nepravda, tj. „Jen některá čísla“. V ostatních případech vrátí výraz pokud-pravda, tj. „Všechna čísla“. |
Příklady – předcházení chybám vzniklým z dělení nulou |
---|
V některých případech nelze tabulku sestavit tak, abychom se přitom vyhnuli dělení nulou. Dojde-li však k dělení nulou, zobrazí se v buňce chybová hodnota, což je obvykle nežádoucí výsledek. Tento příklad ukazuje tři metody, jimiž lze výskytu této chyby zabránit. Předpokládejme, že buňky D2 i E2 obsahují čísla. Je možné, že buňka E2 obsahuje hodnotu 0. Chceme vydělit hodnotu D2 hodnotou E2, ale vyhnout se přitom chybě vzniklé z dělení nulou. Všechny tři následující metody vrátí pro nulovou hodnotu buňky E2 výsledek 0 a v ostatních případech výsledek dělení D2/E2. Výraz =IF(E2=0; 0; D2/E2) přímo testuje, zda nemá buňka E2 hodnotu 0. Výraz =IFERROR(D2/E2; 0) vrací nulu, pokud se vyskytne chyba. Dělení nulou je v tomto případě jedna z možných chyb. Výraz =IF(ISERROR(D2/E2); 0; D2/E2) používá logickou podmínku, která zjišťuje, zda má výraz D2/E2 hodnotu PRAVDA. |
Příklad použití výrazu REGEX |
---|
Předpokládejme, že buňka A1 obsahuje řetězec „marina@example.com“. Vzorec =IF(A1 = REGEX("([A-Z0-9a-z._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})"); "Obsahuje e-mail"; "Neobsahuje e-mail") vrátí text „Obsahuje e-mail“. |