Vnořené příkazy IF aplikace Excel - příklady, osvědčené postupy a alternativy

  • Sdílet Toto
Michael Brown

V tomto kurzu se dozvíte, jak v Excelu používat vnořenou funkci IF pro kontrolu více podmínek. Naučíte se také několik dalších funkcí, které mohou být vhodnou alternativou k použití vnořeného vzorce v Excelu.

Jak obvykle implementujete rozhodovací logiku do pracovních listů aplikace Excel? Ve většině případů použijete vzorec IF pro testování podmínky a vrácení jedné hodnoty, pokud je podmínka splněna, a jiné hodnoty, pokud podmínka splněna není. Chcete-li vyhodnotit více než jednu podmínku a vrátit různé hodnoty v závislosti na výsledku, vnoříte více IF do sebe.

Ačkoli je vnořený příkaz IF velmi oblíbený, není jediným způsobem, jak v Excelu kontrolovat více podmínek. V tomto návodu najdete několik alternativ, které rozhodně stojí za prozkoumání.

    Vnořený příkaz IF aplikace Excel

    Zde je klasický vnořený vzorec IF aplikace Excel v obecné podobě:

    IF( podmínka1 , výsledek1 , IF( podmínka2 , výsledek2 , IF( podmínka3 , výsledek3 , výsledek4 )))

    Můžete si všimnout, že každá následující funkce IF je vložena do funkce value_if_false Každá funkce IF je uzavřena ve vlastní sadě závorek, ale všechny uzavírací závorky jsou na konci vzorce.

    Náš obecný vnořený vzorec IF vyhodnotí 3 podmínky a vrátí 4 různé výsledky (výsledek 4 se vrátí, pokud žádná z podmínek není TRUE). Přeloženo do lidského jazyka, tento vnořený příkaz IF říká Excelu, aby provedl následující:

    Test podmínka1 , pokud TRUE - vrátit výsledek1 , pokud FALSE -

    test podmínka2 , pokud TRUE - vrátit r esult2 , pokud FALSE -

    test podmínka3 , pokud TRUE - vrátit výsledek3 , pokud FALSE -

    vrátit výsledek4

    Jako příklad uveďme provize pro několik prodejců na základě množství prodejů, které uskutečnili:

    Komise Prodej
    3% $1 - $50
    5% $51 - $100
    7% $101 - $150
    10% Více než 150 USD

    V matematice se změnou pořadí sčítanců součet nezmění. V Excelu se změnou pořadí funkcí IF změní výsledek. Proč? Protože vnořený vzorec IF vrací hodnotu, která odpovídá hodnotě první podmínka TRUE . Proto je ve vnořených příkazech IF velmi důležité uspořádat podmínky ve správném směru - od nejvyšší k nejnižší nebo od nejnižší k nejvyšší, v závislosti na logice vašeho vzorce. V našem případě kontrolujeme nejprve podmínku "nejvyšší", pak "druhou nejvyšší" atd:

    =IF(B2>150, 10%, IF(B2>=101, 7%, IF(B2>=51, 5%, IF(B2>=1, 3%, ""))))

    Kdybychom podmínky umístili v opačném pořadí, tedy zdola nahoru, byly by všechny výsledky špatné, protože náš vzorec by se zastavil po prvním logickém testu (B2>=1) pro jakoukoli hodnotu větší než 1. Řekněme, že máme tržby 100 USD - jsou větší než 1, takže vzorec by další podmínky nekontroloval a jako výsledek by vrátil 3 %.

    Pokud chcete podmínky seřadit od nejnižší po nejvyšší, použijte operátor "méně než" a nejprve vyhodnoťte podmínku "nejnižší", pak "druhou nejnižší" a tak dále:

    =IF($B2<1, 0%, IF($B2<51, 3%, IF($B2<101, 5%, IF($B2<=150, 7%, 10%))))

    Jak vidíte, sestavit logiku vnořeného příkazu IF správně až do konce vyžaduje poměrně hodně přemýšlení. A přestože Microsoft Excel umožňuje vnořit do jednoho vzorce až 64 funkcí IF, není to něco, co byste ve svých pracovních listech opravdu chtěli dělat. Pokud tedy vy (nebo někdo jiný) zíráte na svůj vnořený vzorec IF v Excelu a snažíte se zjistit, co vlastně dělá, je čas na to, abyste sepřehodnotíte svou strategii a pravděpodobně zvolíte jiný nástroj ze svého arzenálu.

    Další informace naleznete v části Excel vnořený příkaz IF.

    Vnořené IF s podmínkami OR/AND

    V případě, že potřebujete vyhodnotit několik sad různých podmínek, můžete tyto podmínky vyjádřit pomocí funkce OR i AND, vnořit funkce do příkazů IF a pak vnořit příkazy IF do sebe.

    Vnořené IF v aplikaci Excel s příkazy OR

    Pomocí funkce OR můžete v logickém testu každé funkce IF zkontrolovat dvě nebo více různých podmínek a vrátit TRUE, pokud některý (alespoň jeden) z argumentů OR vyhodnotí jako TRUE. Chcete-li vidět, jak to skutečně funguje, podívejte se na následující příklad.

    Předpokládejme, že máte dva sloupce prodejů, řekněme lednový prodej ve sloupci B a únorový prodej ve sloupci C. Chcete zkontrolovat čísla v obou sloupcích a vypočítat provizi na základě vyššího čísla. Jinými slovy, sestavíte vzorec s následující logikou: pokud je lednový nebo únorový prodej větší než 150 USD, dostane prodejce 10% provizi, pokud je lednový nebo únorový prodej větší nebo roven 150 USD, dostane prodejce 10% provizi, pokud je lednový nebo únorový prodej větší nebo roven 150 USD, dostane prodejce 10% provizi.101 dolarů, prodávající získá 7% provizi atd.

    Chcete-li to mít hotové, napište několik příkazů OF, například OR(B2>150, C2>150), a vnořte je do logických testů funkcí IF, o kterých jsme hovořili výše. Výsledkem je tento vzorec:

    =IF(OR(B2>150, C2>150), 10%, IF(OR(B2>=101, C2>=101),7%, IF(OR(B2>=51, C2>=51), 5%, IF(OR(B2>=1, C2>=1), 3%, ""))))".

    A nechte si přidělit provizi na základě vyšší částky prodeje:

    Další příklady vzorců naleznete v příkazu IF OR aplikace Excel.

    Vnořené IF v aplikaci Excel s příkazy AND

    Pokud vaše logické testy obsahují více podmínek a všechny tyto podmínky by se měly vyhodnotit jako TRUE, vyjádřete je pomocí funkce AND.

    Chcete-li například přiřadit provize na základě nižšího počtu prodejů, vezměte výše uvedený vzorec a příkazy OR nahraďte příkazy AND. Jinak řečeno, Excelu řeknete, aby vrátil 10 % pouze v případě, že prodeje za leden a únor jsou vyšší než 150 USD, 7 % v případě, že prodeje za leden a únor jsou vyšší nebo rovny 101 USD, a tak dále.

    =IF(AND(B2>150, C2>150), 10%, IF(AND(B2>=101, C2>=101), 7%, IF(AND(B2>=51, C2>=51), 5%, IF(AND(B2>=1, C2>=1), 3%, ""))))".

    Výsledkem je, že náš vnořený vzorec IF vypočítá provizi na základě nižšího čísla ve sloupcích B a C. Pokud je některý ze sloupců prázdný, není provize vůbec žádná, protože není splněna žádná z podmínek AND:

    Pokud chcete místo prázdných buněk vrátit 0 %, nahraďte prázdný řetězec (''") v posledním argumentu hodnotou 0 %:

    =IF(AND(B2>150, C2>150), 10%, IF(AND(B2>=101, C2>=101), 7%, IF(AND(B2>=51, C2>=51), 5%, IF(AND(B2>=1, C2>=1), 3%, 0%))))

    Více informací naleznete zde: Excel IF s více podmínkami AND/OR.

    VLOOKUP místo vnořeného IF v aplikaci Excel

    Pokud se jedná o "stupnice", tj. souvislé rozsahy číselných hodnot, které dohromady pokrývají celý rozsah, můžete ve většině případů místo vnořených IF použít funkci VLOOKUP.

    Pro začátek vytvořte referenční tabulku, jak je znázorněno na obrázku níže. A poté sestavte vzorec Vlookup s následujícími údaji přibližná shoda , tj. s range_lookup argument nastaven na hodnotu TRUE.

    Za předpokladu, že hodnota vyhledávání je v B2 a referenční tabulka je F2:G5, je vzorec následující:

    =VLOOKUP(B2,$F$2:$G$5,2,TRUE)

    Všimněte si prosím, že opravujeme table_array s absolutními odkazy ($F$2:$G$5), aby se vzorec správně kopíroval do jiných buněk:

    Nastavením posledního argumentu vzorce Vlookup na hodnotu TRUE řeknete aplikaci Excel, aby vyhledala vzorec. nejbližší shoda - pokud není nalezena přesná shoda, vrátí nejbližší největší hodnotu, která je menší než hodnota vyhledávání. Výsledkem je, že váš vzorec bude odpovídat nejen přesným hodnotám v tabulce vyhledávání, ale také všem hodnotám, které se nacházejí mezi nimi.

    Například hodnota vyhledávání v B3 je $95. Toto číslo v tabulce vyhledávání neexistuje a Vlookup s přesnou shodou by v tomto případě vrátil chybu #N/A. Ale Vlookup s přibližnou shodou pokračuje v hledání, dokud nenajde nejbližší hodnotu, která je menší než hodnota vyhledávání (což je v našem příkladu $50), a vrátí hodnotu z druhého sloupce ve stejném řádku (což je 5%).

    Ale co když je hodnota vyhledávání menší než nejmenší číslo v tabulce vyhledávání nebo je buňka vyhledávání prázdná? V takovém případě vzorec VLOOKUP vrátí chybu #N/A. Pokud to není to, co ve skutečnosti chcete, vnořte VLOOKUP do IFERROR a zadejte hodnotu, která se má vypsat, když není nalezena hodnota vyhledávání. Například:

    =IFERROR(VLOOKUP(B2, $F$2:$G$5, 2, TRUE), "Mimo rozsah")

    Důležitá poznámka! Aby vzorec Vlookup s přibližnou shodou fungoval správně, musí být první sloupec v tabulce pro vyhledávání seřazen v pořadí vzestupné pořadí , od nejmenšího po největší.

    Další informace naleznete v části Přesná shoda VLOOKUP vs. přibližná shoda VLOOKUP.

    Příkaz IFS jako alternativa k vnořené funkci IF

    V aplikaci Excel 2016 a novějších verzích zavedla společnost Microsoft speciální funkci pro vyhodnocení více podmínek - funkci IFS.

    Vzorec systému IFS zvládne až 127 logical_test / value_if_true a první logický test, který má hodnotu TRUE, "vyhrává":

    IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2]...)

    V souladu s výše uvedenou syntaxí lze naši vnořenou formuli IF rekonstruovat tímto způsobem:

    =IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%)

    Pozor na to, že funkce IFS vrací chybu #N/A, pokud není splněna žádná ze zadaných podmínek. Abyste tomu předešli, můžete přidat ještě jednu podmínku. logical_test / value_if_true na konec vzorce, který vrátí 0 nebo prázdný řetězec ("") nebo jakoukoli jinou hodnotu, pokud žádný z předchozích logických testů není TRUE:

    =IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%, TRUE, "")

    Výsledkem je, že náš vzorec vrátí prázdný řetězec (prázdnou buňku) místo chyby #N/A, pokud je odpovídající buňka ve sloupci B prázdná nebo obsahuje text či záporné číslo.

    Poznámka: Stejně jako vnořené IF vrací funkce IFS aplikace Excel hodnotu odpovídající první podmínce, která je vyhodnocena jako TRUE, a proto záleží na pořadí logických testů ve vzorci IFS.

    Další informace naleznete v části Funkce IFS aplikace Excel místo vnořeného IF.

    VÝBĚR místo vnořeného vzorce IF v aplikaci Excel

    Dalším způsobem testování více podmínek v rámci jednoho vzorce v aplikaci Excel je použití funkce CHOOSE, která je určena k vrácení hodnoty ze seznamu na základě pozice této hodnoty.

    Při aplikaci na náš vzorový soubor dat má vzorec následující podobu:

    =CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%)

    V prvním argumentu ( index_num ), vyhodnotíte všechny podmínky a sečtete výsledky. Vzhledem k tomu, že TRUE se rovná 1 a FALSE 0, vypočtete tímto způsobem pozici hodnoty, kterou je třeba vrátit.

    Například hodnota v položce B2 je 150 USD. Pro tuto hodnotu jsou první 3 podmínky TRUE a poslední (B2> 150) je FALSE. Takže, index_num se rovná 3, což znamená, že je vrácena třetí hodnota, která je 7%.

    Tip. Pokud žádný z logických testů není TRUE, index_num je rovna 0 a vzorec vrátí chybu #VALUE!. Snadnou opravou je zabalení funkce CHOOSE do funkce IFERROR takto:

    =IFERROR(CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%), "")

    Další informace naleznete v části Excel CHOOSE function with formula examples.

    Funkce SWITCH jako stručná forma vnořeného IF v aplikaci Excel

    V situacích, kdy pracujete s pevnou sadou předem definovaných hodnot, nikoli s měřítky, může být funkce SWITCH kompaktní alternativou ke složitým vnořeným příkazům IF:

    SWITCH(výraz, hodnota1, výsledek1, hodnota2, výsledek2, ..., [výchozí])

    Funkce SWITCH vyhodnocuje výraz proti seznamu hodnoty a vrací výsledek odpovídající první nalezené shodě.

    V případě, že byste chtěli vypočítat provizi na základě následujících známek, a ne na základě výše prodeje, můžete použít tuto kompaktní verzi vnořeného vzorce IF v aplikaci Excel:

    =SWITCH(C2, "A", 10%, "B", 7%, "C", 5%, "D", 3%, "")

    Nebo můžete vytvořit referenční tabulku, jak je znázorněno na obrázku níže, a místo pevně zadaných hodnot použít odkazy na buňky:

    =SWITCH(C2, $F$2, $G$2, $F$3, $G$3, $F$4, $G$4, $F$5, $G$5, "")

    Všimněte si, že všechny odkazy kromě prvního se znakem $ uzamkneme, aby se nezměnily při kopírování vzorce do jiných buněk:

    Poznámka: Funkce SWITCH je k dispozici pouze v aplikaci Excel 2016 a vyšší.

    Další informace naleznete v části Funkce SWITCH - kompaktní forma vnořeného příkazu IF.

    Spojení více funkcí IF v aplikaci Excel

    Jak bylo uvedeno v předchozím příkladu, funkce SWITCH byla zavedena až v aplikaci Excel 2016. Pro řešení podobných úloh ve starších verzích aplikace Excel můžete spojit dva nebo více příkazů IF pomocí operátoru Concatenate (&) nebo funkce CONCATENATE.

    Například:

    =(IF(C2="a", 10%, "") & IF(C2="b", 7%, "") & IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1

    Nebo

    =CONCATENATE(IF(C2="a", 10%, ""), IF(C2="b", 7%, ""), IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1

    Jak jste si možná všimli, v obou vzorcích násobíme výsledek číslem 1. To se provádí za účelem převodu řetězce vráceného vzorcem Concatenate na číslo. Pokud je očekávaným výstupem text, operace násobení není nutná.

    Další informace naleznete v části Funkce CONCATENATE v aplikaci Excel.

    Vidíte, že Microsoft Excel nabízí několik dobrých alternativ k vnořeným vzorcům IF, a doufám, že vám tento návod napověděl, jak je využít ve vašich pracovních listech. Chcete-li se blíže podívat na příklady probírané v tomto návodu, můžete si stáhnout náš ukázkový sešit níže. Děkuji vám za přečtení a doufám, že se uvidíme na našem blogu příští týden!

    Cvičebnice ke stažení

    Vnořený příkaz If aplikace Excel - příklady (.xlsx soubor)

    Michael Brown je oddaný technologický nadšenec s vášní pro zjednodušování složitých procesů pomocí softwarových nástrojů. S více než desetiletými zkušenostmi v technologickém průmyslu zdokonalil své dovednosti v aplikacích Microsoft Excel a Outlook a také v Tabulkách a Dokumentech Google. Michaelův blog je věnován sdílení jeho znalostí a odborných znalostí s ostatními a poskytuje snadno pochopitelné tipy a návody pro zlepšení produktivity a efektivity. Ať už jste zkušený profesionál nebo začátečník, Michaelův blog nabízí cenné postřehy a praktické rady, jak tyto základní softwarové nástroje co nejlépe využít.