Съдържание
В урока е обяснено как да използвате вложената функция IF в Excel за проверка на няколко условия. Ще научите и няколко други функции, които могат да бъдат добра алтернатива на използването на вложена формула в Excel.
Как обикновено прилагате логика за вземане на решения в работните си листове в Excel? В повечето случаи използвате формула IF, за да тествате условието си и да върнете една стойност, ако условието е изпълнено, и друга стойност, ако условието не е изпълнено. За да оцените повече от едно условие и да върнете различни стойности в зависимост от резултатите, вмъквате няколко IF-а един в друг.
Въпреки че е много популярен, вложеният оператор IF не е единственият начин за проверка на множество условия в Excel. В този урок ще намерите няколко алтернативи, които определено си заслужава да разгледате.
Вложен отчет IF в Excel
Ето класическата вложена формула IF на Excel в общ вид:
IF( условие1 , резултат1 , IF( условие2 , резултат2 , IF( условие3 , резултат3 , резултат4 )))Виждате, че всяка следваща функция IF е вградена в value_if_false Всяка функция IF е затворена в собствен набор от скоби, но всички затварящи скоби са в края на формулата.
Нашата обща вложена формула IF оценява 3 условия и връща 4 различни резултата (резултат 4 се връща, ако нито едно от условията не е TRUE). Преведена на човешки език, тази вложена формула IF казва на Excel да направи следното:
Тест условие1 , ако е TRUE - връща се резултат1 , ако FALSE -тест условие2 , ако е TRUE - върнете r резултат2 , ако FALSE -
тест условие3 , ако е TRUE - връща се резултат3 , ако FALSE -
връщане на резултат4
Като пример, нека открием комисионите за няколко продавачи въз основа на размера на извършените от тях продажби:
Комисия | Продажби |
3% | $1 - $50 |
5% | $51 - $100 |
7% | $101 - $150 |
10% | Над 150 USD |
В математиката промяната на реда на добавките не променя сумата. В Excel промяната на реда на функциите IF променя резултата. Защо? Защото вложената формула IF връща стойност, съответстваща на първо условие TRUE . Ето защо във вашите вложени оператори IF е много важно да подредите условията в правилната посока - от високо към ниско или от ниско към високо, в зависимост от логиката на формулата ви. В нашия случай първо проверяваме условието "най-високо", след това "второ най-високо" и т.н:
=IF(B2>150, 10%, IF(B2>=101, 7%, IF(B2>=51, 5%, IF(B2>=1, 3%, ""))))
Ако поставим условията в обратен ред, отдолу нагоре, резултатите ще бъдат грешни, защото формулата ни ще спре след първия логически тест (B2>=1) за всяка стойност, по-голяма от 1. Да кажем, че имаме продажби за 100 USD - това е повече от 1, така че формулата няма да проверява другите условия и ще върне 3% като резултат.
Ако предпочитате да подредите условията от най-ниското към най-високото, използвайте оператора "less than" и първо оценете "най-ниското" условие, след това "второто най-ниско" и т.н:
=IF($B2<1, 0%, IF($B2<51, 3%, IF($B2<101, 5%, IF($B2<=150, 7%, 10%))))
Както виждате, за да се изгради правилно логиката на една вложена IF декларация докрай, е необходимо доста мислене. И въпреки че Microsoft Excel позволява влагане на до 64 IF функции в една формула, това не е нещо, което наистина искате да правите в работните си листове. Така че, ако вие (или някой друг) се взирате във вашата Excel вложена IF формула, опитвайки се да разберете какво всъщност прави, е време дапреосмислите стратегията си и вероятно ще изберете друг инструмент от арсенала си.
За повече информация вижте вложената декларация IF в Excel.
Вложен IF с условия OR/AND
В случай че трябва да оцените няколко набора от различни условия, можете да изразите тези условия с помощта на функцията OR и AND, да вложите функциите в операторите IF и след това да вложите операторите IF един в друг.
Вложен IF в Excel с изявления OR
С помощта на функцията OR можете да проверите две или повече различни условия в логическия тест на всяка функция IF и да върнете TRUE, ако някой (поне един) от аргументите OR се оценява като TRUE. За да видите как всъщност работи, разгледайте следния пример.
Да предположим, че имате две колони с продажби, например продажби за януари в колона B и продажби за февруари в колона C. Искате да проверите числата в двете колони и да изчислите комисионата въз основа на по-голямото число. С други думи, съставяте формула със следната логика: ако продажбите за януари или февруари са по-големи от 150 USD, продавачът получава 10% комисиона, ако продажбите за януари или февруари са по-големи или равни на101 долара, продавачът получава 7% комисиона и т.н.
За да го направите, напишете няколко оператора OF като OR(B2>150, C2>150) и ги вложете в логическите тестове на функциите IF, разгледани по-горе. В резултат на това ще получите тази формула:
=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%, ""))))
И да разпределите комисионата въз основа на по-високата сума на продажбите:
За повече примери за формули вижте Excel IF OR statement.
Вложен IF в Excel с изявления AND
Ако логическите ви тестове включват няколко условия и всички тези условия трябва да се оценят като TRUE, изразете ги с помощта на функцията AND.
Например, за да разпределите комисионите въз основа на по-малък брой продажби, вземете горната формула и заменете ИЛИ с И. Казано по друг начин, казвате на Excel да върне 10% само ако продажбите за януари и февруари са по-големи от 150 USD, 7%, ако продажбите за януари и февруари са по-големи или равни на 101 USD, и т.н.
=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%, ""))))
В резултат на това нашата вложена формула IF изчислява комисионата въз основа на по-малкото число в колони B и C. Ако някоя от колоните е празна, няма никаква комисиона, тъй като не е изпълнено нито едно от условията AND:
Ако искате да върнете 0% вместо празни клетки, заменете празния низ (''") в последния аргумент с 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%))))
Повече информация можете да намерите тук: Excel IF с множество условия AND/OR.
VLOOKUP вместо вложен IF в Excel
Когато имате работа със "скали", т.е. непрекъснати диапазони от числови стойности, които заедно покриват целия диапазон, в повечето случаи можете да използвате функцията VLOOKUP вместо вложените IF.
Като начало направете референтна таблица, както е показано на снимката по-долу. И след това създайте формула Vlookup с приблизително съвпадение , т.е. с range_lookup аргументът е зададен на TRUE.
Ако приемем, че стойността за търсене е в B2, а референтната таблица е F2:G5, формулата е следната:
=VLOOKUP(B2,$F$2:$G$5,2,TRUE)
Моля, обърнете внимание, че поправяме table_array с абсолютни препратки ($F$2:$G$5), за да може формулата да се копира правилно в други клетки:
Като зададете последния аргумент на формулата Vlookup на TRUE, казвате на Excel да търси най-близко съвпадение - ако не бъде намерено точно съвпадение, връща следващата по големина стойност, която е по-малка от стойността за търсене. В резултат на това вашата формула ще съвпада не само с точните стойности в таблицата за търсене, но и с всички стойности, които попадат между тях.
Например стойността за търсене в B3 е $95. Това число не съществува в таблицата за търсене и в този случай Vlookup с точно съвпадение ще върне грешка #N/A. Но Vlookup с приблизително съвпадение продължава търсенето, докато намери най-близката стойност, която е по-малка от стойността за търсене (която в нашия пример е $50), и връща стойност от втората колона в същия ред (която е 5%).
Но какво става, ако стойността на търсенето е по-малка от най-малкото число в таблицата за търсене или клетката за търсене е празна? В този случай формулата VLOOKUP ще върне грешка #N/A. Ако това не е това, което всъщност искате, вложете VLOOKUP в IFERROR и задайте стойността, която да се изведе, когато стойността на търсенето не е намерена. Например:
=IFERROR(VLOOKUP(B2, $F$2:$G$5, 2, TRUE), "Извън обхвата")
Важна забележка! За да работи правилно формулата Vlookup с приблизително съвпадение, първата колона в таблицата за търсене трябва да е сортирана в възходящ ред , от най-малкия до най-големия.
За повече информация вижте Точно съвпадение VLOOKUP срещу приблизително съвпадение VLOOKUP.
Изречение IFS като алтернатива на вложената функция IF
В Excel 2016 и по-късните версии Microsoft въведе специална функция за оценка на множество условия - функцията IFS.
Една формула IFS може да обработва до 127 logical_test / value_if_true и първият логически тест, който се оценява като TRUE, "печели":
IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2]...)В съответствие с горния синтаксис нашата вложена формула IF може да бъде реконструирана по следния начин:
=IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%)
Обърнете внимание, че функцията IFS връща грешка #N/A, ако не е изпълнено нито едно от посочените условия. За да избегнете това, можете да добавите още един logical_test / value_if_true в края на формулата, която ще върне 0 или празен низ ("") или каквато искате стойност, ако нито един от предишните логически тестове не е TRUE:
=IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%, TRUE, "")
В резултат на това нашата формула ще върне празен низ (празна клетка) вместо грешката #N/A, ако съответната клетка в колона B е празна или съдържа текст или отрицателно число.
Забележка. Подобно на вложените IF, функцията IFS на Excel връща стойност, съответстваща на първото условие, което се оценява като TRUE, поради което редът на логическите тестове във формулата IFS е от значение.
За повече информация вижте функцията IFS на Excel вместо вложен IF.
CHOOSE вместо вложена формула IF в Excel
Друг начин за тестване на няколко условия в рамките на една формула в Excel е използването на функцията CHOOSE, която е предназначена да връща стойност от списъка въз основа на позицията на тази стойност.
Приложена към нашата извадка от данни, формулата придобива следната форма:
=CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%)
В първия аргумент ( index_num ), оценявате всички условия и събирате резултатите. Като се има предвид, че TRUE е равно на 1, а FALSE - на 0, по този начин изчислявате позицията на стойността, която трябва да се върне.
Например стойността в B2 е 150 USD. За тази стойност първите 3 условия са TRUE, а последното (B2> 150) е FALSE, index_num е равно на 3, което означава, че се връща третата стойност, която е 7%.
Съвет. Ако нито един от логическите тестове не е TRUE, index_num е равна на 0 и формулата връща грешката #VALUE!. Лесно решение е да се обвие функцията CHOOSE във функцията IFERROR по следния начин:
=IFERROR(CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%), "")
За повече информация вижте функцията CHOOSE на Excel с примери за формули.
Функцията SWITCH като кратка форма на вложен IF в Excel
В ситуации, когато се работи с фиксиран набор от предварително определени стойности, а не с мащаби, функцията SWITCH може да бъде компактна алтернатива на сложните вложени оператори IF:
SWITCH(израз, стойност1, резултат1, стойност2, резултат2, ..., [по подразбиране])Функцията SWITCH оценява изразяване срещу списък от стойности и връща резултат съответстващ на първото намерено съвпадение.
В случай че искате да изчислите комисионата въз основа на следните степени, а не на суми за продажби, можете да използвате тази компактна версия на вложената формула IF в Excel:
=SWITCH(C2, "A", 10%, "B", 7%, "C", 5%, "D", 3%, "")
Или можете да създадете референтна таблица, както е показано на снимката по-долу, и да използвате препратки към клетките вместо твърдо кодирани стойности:
=SWITCH(C2, $F$2, $G$2, $F$3, $G$3, $F$4, $G$4, $F$5, $G$5, "")
Обърнете внимание, че заключваме всички препратки, с изключение на първата, със знака $, за да предотвратим промяната им при копиране на формулата в други клетки:
Забележка: Функцията SWITCH е налична само в Excel 2016 и по-нови версии.
За повече информация вижте функцията SWITCH - компактната форма на вложен оператор IF.
Конкатениране на няколко функции IF в Excel
Както беше споменато в предишния пример, функцията SWITCH беше въведена едва в Excel 2016. За да се справите с подобни задачи в по-стари версии на Excel, можете да комбинирате две или повече IF декларации, като използвате оператора Concatenate (&) или функцията CONCATENATE.
Например:
=(IF(C2="a", 10%, "") & IF(C2="b", 7%, "") & IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1
Или
=CONCATENATE(IF(C2="a", 10%, ""), IF(C2="b", 7%, ""), IF(C2="c", 5%, "") & IF(C2="d", 3%, ""))*1
Както може би сте забелязали, и в двете формули умножаваме резултата по 1. Това се прави, за да се преобразува низът, върнат от формулата Concatenate, в число. Ако очакваният резултат е текст, операцията умножение не е необходима.
За повече информация вижте функцията CONCATENATE в Excel.
Виждате, че Microsoft Excel предлага няколко добри алтернативи на вложените IF формули и се надявам, че този урок ви е подсказал как да ги използвате в работните си листове. За да разгледате по-отблизо примерите, разгледани в този урок, можете да изтеглите нашата примерна работна книга по-долу. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!
Практическа работна тетрадка за изтегляне
Вложен оператор If в Excel - примери (.xlsx файл)