Оглавление
В уроке рассказывается, как использовать вложенную функцию ЕСЛИ в Excel для проверки нескольких условий. Вы также узнаете несколько других функций, которые могут быть хорошей альтернативой использованию вложенной формулы в Excel.
Как вы обычно реализуете логику принятия решений в своих листах Excel? В большинстве случаев вы используете формулу IF для проверки условия и возвращаете одно значение, если условие выполнено, и другое значение, если условие не выполнено. Чтобы оценить более одного условия и вернуть разные значения в зависимости от результатов, вы вставляете несколько IF друг в друга.
Несмотря на свою популярность, вложенный оператор IF не является единственным способом проверки нескольких условий в Excel. В этом учебнике вы найдете несколько альтернатив, которые определенно стоит изучить.
Вложенный оператор IF в Excel
Вот классическая вложенная формула ЕСЛИ в Excel в общем виде:
ЕСЛИ( условие1 , результат1 , IF( условие2 , результат2 , IF( условие3 , результат3 , результат4 )))Вы можете видеть, что каждая последующая функция IF встраивается в значение_если_ложно Каждая функция 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 долларов |
В математике изменение порядка слагаемых не меняет сумму. В Excel изменение порядка функций ЕСЛИ меняет результат. Почему? Потому что вложенная формула ЕСЛИ возвращает значение, соответствующее параметру первое условие TRUE Поэтому во вложенных операторах IF очень важно расположить условия в правильном направлении - от высокого к низкому или от низкого к высокому, в зависимости от логики вашей формулы. В нашем случае мы сначала проверяем условие "самое высокое", затем "второе самое высокое" и так далее:
=IF(B2>150, 10%, IF(B2>=101, 7%, IF(B2>=51, 5%, IF(B2>=1, 3%, ""))))
Если бы мы расположили условия в обратном порядке, снизу вверх, результаты были бы неверными, потому что наша формула остановилась бы после первого логического теста (B2>=1) для любого значения больше 1. Допустим, у нас 100 долларов продаж - это больше 1, поэтому формула не будет проверять другие условия и вернет 3% в качестве результата.
Если вы предпочитаете расположить условия от низкого к высокому, то используйте оператор "less than" и оценивайте сначала условие "наименьшее", затем "второе наименьшее" и так далее:
=IF($B2<1, 0%, IF($B2<51, 3%, IF($B2<101, 5%, IF($B2<=150, 7%, 10%))))
Как видите, чтобы правильно выстроить логику вложенного оператора ЕСЛИ до самого конца, нужно немало подумать. И хотя Microsoft Excel позволяет вложить до 64 функций ЕСЛИ в одну формулу, это не то, что вы действительно хотите делать в своих рабочих листах. Итак, если вы (или кто-то другой) смотрите на свою вложенную формулу ЕСЛИ в Excel, пытаясь понять, что она на самом деле делает, пришло время сделать следующее.пересмотреть свою стратегию и, возможно, выбрать другой инструмент в своем арсенале.
Для получения дополнительной информации см. раздел Excel "Вложенный оператор IF".
Вложенный IF с условиями OR/AND
Если вам нужно оценить несколько наборов различных условий, вы можете выразить эти условия с помощью функций OR и AND, вложить эти функции в операторы IF, а затем вложить операторы IF друг в друга.
Вложенные IF в Excel с помощью операторов OR
Используя функцию ИЛИ, вы можете проверить два или более различных условий в логическом тесте каждой функции ЕСЛИ и вернуть TRUE, если любой (хотя бы один) из аргументов ИЛИ оценивается как TRUE. Чтобы увидеть, как это работает на самом деле, рассмотрите следующий пример.
Предположим, у вас есть две колонки продаж, скажем, январские продажи в колонке B и февральские продажи в колонке C. Вы хотите проверить числа в обеих колонках и рассчитать комиссионные на основе большего числа. Другими словами, вы строите формулу со следующей логикой: если продажи за январь или февраль больше $150, продавец получает 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.
Например, чтобы назначить комиссионные на основе меньшего количества продаж, возьмите приведенную выше формулу и замените операторы OR на AND. Говоря иначе, вы говорите Excel возвращать 10%, только если продажи за январь и февраль превышают $150, 7%, если продажи за январь и февраль больше или равны $101, и так далее.
=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)
Обратите внимание, что мы исправляем массив_таблиц с абсолютными ссылками ($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 логический_тест / значение_если_истина пар, и первый логический тест с оценкой 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, если ни одно из указанных условий не выполняется. Чтобы избежать этого, вы можете добавить еще одно логический_тест / значение_если_истина в конце вашей формулы, которая вернет 0 или пустую строку ("") или любое другое значение, которое вы хотите, если ни один из предыдущих логических тестов не является TRUE:
=IFS(B2>150, 10%, B2>=101, 7%, B2>=51, 5%, B2>0, 3%, TRUE, "")
В результате наша формула вернет пустую строку (пустую ячейку) вместо ошибки #N/A, если соответствующая ячейка в столбце B пуста или содержит текст или отрицательное число.
Примечание. Как и вложенные IF, функция IFS в Excel возвращает значение, соответствующее первому условию, которое оценивается как TRUE, поэтому порядок логических тестов в формуле IFS имеет значение.
Для получения дополнительной информации см. раздел Функция Excel IFS вместо вложенного IF.
CHOOSE вместо вложенной формулы IF в Excel
Еще один способ проверки нескольких условий в рамках одной формулы в Excel - использование функции CHOOSE, которая предназначена для возврата значения из списка на основе позиции этого значения.
В применении к нашему набору данных формула принимает следующий вид:
=CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%)
В первом аргументе ( индексное_число ), вы оцениваете все условия и складываете результаты. Учитывая, что TRUE приравнивается к 1, а FALSE - к 0, таким образом вы вычисляете позицию возвращаемого значения.
Например, значение в B2 равно $150. Для этого значения первые 3 условия TRUE, а последнее (B2> 150) - FALSE. Итак, индексное_число равно 3, то есть возвращается 3-е значение, то есть 7%.
Совет. Если ни один из логических тестов не является ИСТИНОЙ, индексное_число равна 0, и формула возвращает ошибку #VALUE! Простое решение - обернуть CHOOSE в функцию IFERROR следующим образом:
=IFERROR(CHOOSE((B2>=1) + (B2>=51) + (B2>=101) + (B2>150), 3%, 5%, 7%, 10%), "")
Для получения дополнительной информации смотрите функцию Excel CHOOSE с примерами формул.
Функция SWITCH как лаконичная форма вложенного IF в Excel
В ситуациях, когда вы имеете дело с фиксированным набором предопределенных значений, а не со шкалами, функция SWITCH может стать компактной альтернативой сложным вложенным операторам IF:
SWITCH(выражение, значение1, результат1, значение2, результат2, ..., [по умолчанию])Функция SWITCH оценивает выражение против списка значения и возвращает результат соответствующий первому найденному совпадению.
В случае если вы хотите рассчитать комиссионные на основе следующих оценок, а не суммы продаж, вы можете использовать эту компактную версию вложенной формулы ЕСЛИ в 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.
Конкатенация нескольких функций ЕСЛИ в 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)