Obsah
V tomto návode sa vysvetľuje, ako používať vnorenú funkciu IF v programe Excel na kontrolu viacerých podmienok. Dozviete sa aj niekoľko ďalších funkcií, ktoré by mohli byť vhodnou alternatívou k používaniu vnoreného vzorca v programe Excel.
Ako zvyčajne implementujete rozhodovaciu logiku v pracovných listoch programu Excel? Vo väčšine prípadov použijete vzorec IF na testovanie podmienky a vrátenie jednej hodnoty, ak je podmienka splnená, a inej hodnoty, ak podmienka splnená nie je. Ak chcete vyhodnotiť viac ako jednu podmienku a vrátiť rôzne hodnoty v závislosti od výsledkov, vnoríte do seba viacero IF.
Hoci je vnorený príkaz IF veľmi populárny, nie je jediným spôsobom, ako v programe Excel kontrolovať viacero podmienok. V tomto návode nájdete niekoľko alternatív, ktoré určite stoja za preskúmanie.
Vnorený príkaz IF programu Excel
Tu je klasický vnorený vzorec IF programu Excel vo všeobecnej podobe:
IF( podmienka1 , výsledok1 , IF( podmienka2 , výsledok2 , IF( podmienka3 , výsledok3 , výsledok4 )))Vidíte, že každá nasledujúca funkcia IF je vložená do value_if_false argument predchádzajúcej funkcie. Každá funkcia IF je uzavretá do vlastnej sady zátvoriek, ale všetky uzatváracie zátvorky sú na konci vzorca.
Náš všeobecný vnorený vzorec IF vyhodnotí 3 podmienky a vráti 4 rôzne výsledky (výsledok 4 sa vráti, ak žiadna z podmienok nie je TRUE). Preložené do ľudského jazyka, tento vnorený príkaz IF hovorí programu Excel, aby urobil nasledovné:
Test podmienka1 , ak TRUE - návrat výsledok1 , ak FALSE -test podmienka2 , ak TRUE - vrátiť r esult2 , ak FALSE -
test podmienka3 , ak TRUE - návrat výsledok3 , ak FALSE -
vrátiť výsledok4
Ako príklad si zistíme provízie niekoľkých predajcov na základe množstva predajov, ktoré uskutočnili:
Komisia | Predaj |
3% | $1 - $50 |
5% | $51 - $100 |
7% | $101 - $150 |
10% | Viac ako 150 USD |
V matematike sa zmenou poradia sčítancov súčet nezmení. V programe Excel sa zmenou poradia funkcie IF zmení výsledok. Prečo? Pretože vnorený vzorec IF vracia hodnotu zodpovedajúcu prvá podmienka TRUE . Preto je vo vašich vnorených príkazoch IF veľmi dôležité usporiadať podmienky v správnom smere - od najvyššej k najnižšej alebo od najnižšej k najvyššej, v závislosti od logiky vášho vzorca. V našom prípade kontrolujeme najprv podmienku "najvyššia", potom "druhá najvyššia" atď:
=IF(B2>150, 10%, IF(B2>=101, 7%, IF(B2>=51, 5%, IF(B2>=1, 3%, ""))))
Ak by sme podmienky zoradili v opačnom poradí, teda zdola nahor, výsledky by boli všetky nesprávne, pretože náš vzorec by sa zastavil po prvom logickom teste (B2>=1) pre akúkoľvek hodnotu väčšiu ako 1. Povedzme, že máme tržby 100 USD - sú väčšie ako 1, takže vzorec by nekontroloval ďalšie podmienky a ako výsledok by vrátil 3 %.
Ak chcete radšej zoradiť podmienky od najnižšej po najvyššiu, použite operátor "menej ako" a najprv vyhodnoťte podmienku "najnižšia", potom "druhá najnižšia" atď:
=IF($B2<1, 0%, IF($B2<51, 3%, IF($B2<101, 5%, IF($B2<=150, 7%, 10%))))
Ako vidíte, správne zostavenie logiky vnoreného príkazu IF až do konca si vyžaduje pomerne veľa premýšľania. A hoci Microsoft Excel umožňuje vnorenie až 64 funkcií IF do jedného vzorca, nie je to niečo, čo by ste vo svojich pracovných listoch naozaj chceli robiť. Ak teda vy (alebo niekto iný) hľadíte na svoj vnorený vzorec IF v programe Excel a snažíte sa zistiť, čo vlastne robí, je časprehodnoťte svoju stratégiu a pravdepodobne si vyberte iný nástroj zo svojho arzenálu.
Viac informácií nájdete v časti Excel vnorený príkaz IF.
Vnorené IF s podmienkami OR/AND
V prípade, že potrebujete vyhodnotiť niekoľko množín rôznych podmienok, môžete tieto podmienky vyjadriť pomocou funkcie OR aj AND, vložiť funkcie do príkazov IF a potom vložiť príkazy IF do seba.
Vnorené IF v programe Excel s príkazmi OR
Pomocou funkcie OR môžete v logickom teste každej funkcie IF skontrolovať dve alebo viac rôznych podmienok a vrátiť TRUE, ak sa niektorý (aspoň jeden) z argumentov OR vyhodnotí ako TRUE. Ak chcete vidieť, ako to v skutočnosti funguje, zvážte nasledujúci príklad.
Predpokladajme, že máte dva stĺpce predaja, povedzme januárový predaj v stĺpci B a februárový predaj v stĺpci C. Chcete skontrolovať čísla v oboch stĺpcoch a vypočítať províziu na základe vyššieho čísla. Inými slovami, zostavíte vzorec s nasledujúcou logikou: ak je januárový alebo februárový predaj vyšší ako 150 USD, predajca dostane 10 % províziu, ak je januárový alebo februárový predaj vyšší alebo rovný101 USD, predávajúci dostane 7 % províziu atď.
Ak to chcete mať hotové, napíšte niekoľko príkazov OF, napríklad OR(B2>150, C2>150), a vložte ich do logických testov funkcií IF, o ktorých sme hovorili vyššie. Ako výsledok dostanete 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 provízia sa prideľuje na základe vyššej sumy predaja:
Ďalšie príklady vzorcov nájdete v príkaze IF OR aplikácie Excel.
Vnorené IF v programe Excel s príkazmi AND
Ak vaše logické testy obsahujú viacero podmienok a všetky tieto podmienky by sa mali vyhodnotiť ako TRUE, vyjadrite ich pomocou funkcie AND.
Ak chcete napríklad priradiť provízie na základe nižšieho počtu predajov, vezmite vyššie uvedený vzorec a príkazy OR nahraďte príkazmi AND. Inak povedané, programu Excel poviete, aby vrátil 10 % len vtedy, ak je predaj za január a február vyšší ako 150 USD, 7 %, ak je predaj za január a február vyšší alebo rovný 101 USD, a tak ďalej.
=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ýsledkom je, že náš vnorený vzorec IF vypočíta províziu na základe nižšieho čísla v stĺpcoch B a C. Ak je niektorý zo stĺpcov prázdny, provízia nie je žiadna, pretože nie je splnená žiadna z podmienok AND:
Ak chcete namiesto prázdnych buniek vrátiť 0%, nahraďte prázdny reťazec (''") v poslednom argumente 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%))))
Viac informácií nájdete tu: Excel IF s viacerými podmienkami AND/OR.
VLOOKUP namiesto vnoreného IF v programe Excel
Ak sa zaoberáte "stupnicami", t. j. súvislými rozsahmi číselných hodnôt, ktoré spolu pokrývajú celý rozsah, vo väčšine prípadov môžete namiesto vnorených IF použiť funkciu VLOOKUP.
Na začiatok vytvorte referenčnú tabuľku, ako je znázornené na snímke nižšie. A potom vytvorte vzorec Vlookup s približná zhoda , t. j. s range_lookup argument nastavený na TRUE.
Za predpokladu, že vyhľadávacia hodnota je v B2 a referenčná tabuľka je F2:G5, vzorec vyzerá takto:
=VLOOKUP(B2,$F$2:$G$5,2,TRUE)
Všimnite si, prosím, že sme opravili table_array s absolútnymi odkazmi ($F$2:$G$5), aby sa vzorec správne kopíroval do iných buniek:
Nastavením posledného argumentu vzorca Vlookup na hodnotu TRUE poviete programu Excel, aby vyhľadal najbližšia zhoda - ak sa nenájde presná zhoda, vráti najbližšiu najväčšiu hodnotu, ktorá je menšia ako hodnota vyhľadávania. Výsledkom je, že váš vzorec bude zodpovedať nielen presným hodnotám v tabuľke vyhľadávania, ale aj všetkým hodnotám, ktoré sa nachádzajú medzi nimi.
Napríklad hodnota vyhľadávania v B3 je $95. Toto číslo v tabuľke vyhľadávania neexistuje a Vlookup s presnou zhodou by v tomto prípade vrátil chybu #N/A. Ale Vlookup s približnou zhodou pokračuje v hľadaní, kým nenájde najbližšiu hodnotu, ktorá je menšia ako hodnota vyhľadávania (čo je v našom príklade $50) a vráti hodnotu z druhého stĺpca v tom istom riadku (čo je 5%).
Ale čo ak je hodnota vyhľadávania menšia ako najmenšie číslo v tabuľke vyhľadávania alebo je bunka vyhľadávania prázdna? V tomto prípade vzorec VLOOKUP vráti chybu #N/A. Ak to nie je to, čo v skutočnosti chcete, vnorte vzorec VLOOKUP do IFERROR a zadajte hodnotu, ktorá sa má vypisovať, keď sa hodnota vyhľadávania nenájde. Napríklad:
=IFERROR(VLOOKUP(B2, $F$2:$G$5, 2, TRUE), "Mimo rozsahu")
Dôležitá poznámka! Aby vzorec Vlookup s približnou zhodou fungoval správne, prvý stĺpec v tabuľke vyhľadávania musí byť zoradený v vzostupné poradie od najmenšieho po najväčší.
Viac informácií nájdete v časti Presná zhoda VLOOKUP vs. približná zhoda VLOOKUP.
Príkaz IFS ako alternatíva vnorenej funkcie IF
V programe Excel 2016 a v novších verziách spoločnosť Microsoft zaviedla špeciálnu funkciu na vyhodnotenie viacerých podmienok - funkciu IFS.
Vzorec systému IFS dokáže spracovať až 127 logical_test / value_if_true a prvý logický test, ktorý sa vyhodnotí ako TRUE, "vyhráva":
IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2]...)V súlade s vyššie uvedenou syntaxou možno náš vnorený vzorec IF rekonštruovať týmto spôsobom:
=IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%)
Pozor, funkcia IFS vracia chybu #N/A, ak nie je splnená žiadna zo zadaných podmienok. Ak sa tomu chcete vyhnúť, môžete pridať ešte jednu logical_test / value_if_true na koniec vzorca, ktorý vráti 0 alebo prázdny reťazec ("") alebo akúkoľvek hodnotu, ak žiadny z predchádzajúcich logických testov nie je TRUE:
=IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%, TRUE, "")
Výsledkom je, že náš vzorec vráti prázdny reťazec (prázdnu bunku) namiesto chyby #N/A, ak je príslušná bunka v stĺpci B prázdna alebo obsahuje text alebo záporné číslo.
Poznámka: Podobne ako vnorené IF, funkcia IFS programu Excel vracia hodnotu zodpovedajúcu prvej podmienke, ktorá sa vyhodnotí ako TRUE, preto je dôležité poradie logických testov vo vzorci IFS.
Viac informácií nájdete v časti Funkcia IFS aplikácie Excel namiesto vnoreného IF.
VÝBER namiesto vnoreného vzorca IF v programe Excel
Ďalším spôsobom testovania viacerých podmienok v rámci jedného vzorca v programe Excel je použitie funkcie CHOOSE, ktorá je určená na vrátenie hodnoty zo zoznamu na základe pozície tejto hodnoty.
Pri aplikácii na náš súbor údajov má vzorec nasledujúci tvar:
=CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%)
V prvom argumente ( index_num ), vyhodnotíte všetky podmienky a spočítate výsledky. Vzhľadom na to, že TRUE sa rovná 1 a FALSE 0, týmto spôsobom vypočítate pozíciu hodnoty, ktorú treba vrátiť.
Napríklad hodnota v B2 je 150 USD. Pre túto hodnotu sú prvé 3 podmienky TRUE a posledná (B2> 150) je FALSE, index_num sa rovná 3, čo znamená, že sa vráti tretia hodnota, ktorá je 7%.
Tip. Ak žiadny z logických testov nie je TRUE, index_num sa rovná 0 a vzorec vráti chybu #VALUE!. Jednoduchou opravou je zabalenie funkcie CHOOSE do funkcie IFERROR takto:
=IFERROR(CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%), "")
Ďalšie informácie nájdete v časti Funkcia Excel CHOOSE s príkladmi vzorcov.
Funkcia SWITCH ako stručná forma vnoreného IF v programe Excel
V situáciách, keď pracujete s pevnou množinou vopred definovaných hodnôt, nie so stupnicami, môže byť funkcia SWITCH kompaktnou alternatívou zložitých vnorených príkazov IF:
SWITCH(výraz, hodnota1, výsledok1, hodnota2, výsledok2, ..., [predvolené])Funkcia SWITCH vyhodnocuje výraz na základe zoznamu hodnoty a vráti výsledok zodpovedajúce prvej nájdenej zhode.
V prípade, že chcete vypočítať províziu na základe nasledujúcich známok, a nie na základe výšky predaja, môžete použiť túto kompaktnú verziu vnoreného vzorca IF v programe Excel:
=SWITCH(C2, "A", 10%, "B", 7%, "C", 5%, "D", 3%, "")
Alebo môžete vytvoriť referenčnú tabuľku, ako je znázornené na nasledujúcej snímke, a namiesto pevne zadaných hodnôt použiť odkazy na bunky:
=SWITCH(C2, $F$2, $G$2, $F$3, $G$3, $F$4, $G$4, $F$5, $G$5, "")
Všimnite si, že všetky odkazy okrem prvého so znakom $ uzamkneme, aby sa nezmenili pri kopírovaní vzorca do iných buniek:
Poznámka: Funkcia SWITCH je k dispozícii len v programe Excel 2016 a vyšších.
Viac informácií nájdete v časti Funkcia SWITCH - kompaktná forma vnoreného príkazu IF.
Zlučovanie viacerých funkcií IF v programe Excel
Ako bolo uvedené v predchádzajúcom príklade, funkcia SWITCH bola zavedená až v programe Excel 2016. Na riešenie podobných úloh v starších verziách programu Excel môžete spojiť dva alebo viac príkazov IF pomocou operátora Concatenate (&) alebo funkcie CONCATENATE.
Napríklad:
=(IF(C2="a", 10%, "") & IF(C2="b", 7%, "") & IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1
Alebo
=CONCATENATE(IF(C2="a", 10%, ""), IF(C2="b", 7%, ""), IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1
Ako ste si mohli všimnúť, v oboch vzorcoch násobíme výsledok číslom 1. Robí sa to preto, aby sa reťazec vrátený vzorcom Concatenate previedol na číslo. Ak je očakávaným výstupom text, operácia násobenia nie je potrebná.
Ďalšie informácie nájdete v časti Funkcia CONCATENATE v programe Excel.
Vidíte, že Microsoft Excel poskytuje niekoľko dobrých alternatív k vnoreným vzorcom IF a dúfam, že vám tento návod poskytol niekoľko nápoved, ako ich využiť vo vašich pracovných hárkoch. Ak sa chcete bližšie pozrieť na príklady rozoberané v tomto návode, môžete si stiahnuť náš vzorový zošit nižšie. Ďakujem vám za prečítanie a dúfam, že sa uvidíme na našom blogu budúci týždeň!
Cvičebnica na stiahnutie
Excel vnorený príkaz If - príklady (.xlsx súbor)