7 способов проверить условия в Excel
Проверка условий и выполнение расчётов по разной логике в зависимости от выполнения или невыполнения этих условий - один из базовых навыков, который одним из первых осваивают все, кто работает в Microsoft Excel. Обычно для этой цели используют классическую функцию ЕСЛИ (IF). Если же необходимо проверить несколько критериев, то приходится вкладывать несколько функций ЕСЛИ друг в друга или использовать связки ЕСЛИ+И (ИЛИ), что уже не так просто и приводит к появлению страшноватых "матрёшек-монстров".
Однако, кроме общеизвестной функции ЕСЛИ, на самом деле, есть ещё несколько более изящных способов выполнить подобную проверку.
Во-первых, в последних версиях Microsoft Excel появились новые удобные функции для этой цели: ЕСЛИМН (IFS) и ПЕРЕКЛЮЧ (SWITCH) - с и помощью реализовать сложные многоуровневые проверки стало теперь гораздо проще. Во-вторых, даже в старых версиях Excel есть несколько подходов к проверке условий вообще без функции ЕСЛИ, зато с использованием формул массива. которые однозначно стоит изучить.
ЕСЛИ (IF)
Для начала, кратко вспомним "классику" - функцию ЕСЛИ (IF), доступную абсолютно в любой версии Microsoft Excel:
Первый аргумент здесь - это проверяемое условие, второй - что выводим если условие выполняется, третий - что выводим, если условие не выполняется.
Если нужно проверить несколько условий, то придётся вкладывать друг в друга несколько функций ЕСЛИ и формула получается уже пострашнее:
Для наглядности, кстати, весьма полезно бывает прямо в строке формул разнести вложенные функции по разным строчкам (с помощью сочетания клавиш Alt+Enter) и сделать для них отступы соответственно уровню вложенности (с помощью пробелов) - так всё будет гораздо понятнее:
ЕСЛИМН (IFS)
Эту функцию добавили в Excel, начиная с 2019-й версии. С её помощью матрёшку из вложенных друг в друга функций ЕСЛИ можно заменить одной компактной формулой:
Здесь в качестве аргументов мы задаём пары - условие и значение, которое нужно вывести, если условие выполняется. Максимально разрешается задать до 127 таких пар "условие-результат", что более, чем достаточно для повседневных задач.
Имейте в виду, что первое же выполнившееся условие останавливает расчёт и дальнейшие условия уже не проверяются.
ПЕРЕКЛЮЧ (SWITCH)
Ещё одна новая функция, добавленная с 2019 года - это функция ПЕРЕКЛЮЧ (SWITCH). Она тоже позволяет заменить кучу вложенных друг в друга ЕСЛИ, но делает это слегка иначе:
Важно отметить, что первым аргументом этой функции может быть не проверяемая ячейка, а логическое значение ИСТИНА или ЛОЖЬ. Тогда все указанные далее условия будут проверяться на выполнение или невыполнение, соответственно. Например, весьма частым случаем проверки условий бывает проверка попадания исходного значения в один из нескольких определённых интервалов. Как раз для такого отлично подойдет функция ПЕРКЛЮЧ со значением ИСТИНА в первом аргументе:
ВПР с интервальным просмотром
Предыдущую задачу с проверкой попадания в интервалы можно решить и более компактным способом - с использованием функции ВПР (VLOOKUP) в режиме интервального просмотра, когда она ищет не точное, а ближайшее наименьшее совпадение:
Здесь:
- F2 - ячейка с ценой для которой ищем класс;
- J:K - таблица с ценовыми категориями;
- 2 - номер столбца в этой таблице, откуда нужно вернуть класс;
- 1 (или ИСТИНА) - включение режима приблизительного поиска, когда в первом столбце таблицы J:K ищется не точное, а ближайшее наименьшее совпадение.
ВЫБОР
Помимо новых функций ЕСЛИМН (IFS) и ПЕРКЛЮЧ (SWITCH) для решения задач множественной проверки условий можно использовать и классику - например, функцию ВЫБОР (CHOOSE):
Начиная со второго её аргумента мы указываем все возможные результаты, а первым аргументом - номер результата, который нам нужен.
Дополнительно снаружи можно завернуть её в функцию ЕСЛИОШИБКА (IFERROR) для перехвата ошибок в том случае, когда ни одно из значений не может быть получено (например, оценка не указана или меньше нуля).
Что интересно, в качестве второго и далее аргументов функции ВЫБОР можно задавать не только текст или числа, но и целые диапазоны. Например, можно легко вычислить сумму продаж за выбранный квартал:

Прямое умножение на условие(я)
Есть и способы проверки условий, которые вообще не предполагают использования каких-либо логических функций типа ЕСЛИ (IF).
Например, можно использовать в формуле прямое умножение на условие. Там где условие выполняется - возвращается ИСТИНА, где не выполняется - ЛОЖЬ. Однако вычислительный движок Excel интерпретирует ИСТИНУ как 1, а ЛОЖЬ как 0, так что последующее умножение на условие обнуляет, таким образом, все ячейки, где критерий не выполняется.
Так, например, можно легко дать скидку в 15% на нужный товар:
А если захочется добавить ещё условие (например, давать скидку только на свитера дороже 3000), то можно просто дописать к формуле ещё один множитель-условие:
Формула массива
Если нужно проверить сразу несколько значений на соответствие заданным критериям, то можно использовать и функции И (AND) и ИЛИ (OR), причём в варианте формулы массива.
Предположим, что нам нужно дать ту же скидку в 15% на товары с характеристиками из жёлтых ячеек:
Здесь мы проверяем сразу три ячейки A2:C2 на предмет равенства искомым критериям в жёлтых ячейках H2:J2. Если каждая проверяемая пара ячеек даёт ИСТИНУ, то и вся функция И тоже вернёт логическое значение ИСТИНА, которое мы затем умножаем на нашу скидку.
Если у вас последние версии Excel (2021 или новее), то после ввода этой формулы достаточно просто нажать на Enter. В старых же версиях необходимо ввести эту формулу уже как формулу массива - используя сочетание клавиш Ctrl+Shift+Enter.
Ссылки по теме
- Выборочные вычисления по одному или нескольким критериям
- Получение элемента из набора по номеру функцией ВЫБОР (CHOOSE)
- Формулы массива в Excel
Читаемость выросла в разы!
Спасибо, Николай!
Оттолкнувшись от раздела "Прямое умножение на условие(я)" решил попробовать по аналогии "сложение", т.е. функцию ИЛИ() заменил на "+".
В результате моя формула:
=ЕСЛИ(ИЛИ(И($G$9=1;
ДЛСТР($A$12)=10);
И($G$9=2;
ДЛСТР($A$12)=12);
ЕПУСТО($A$12));
ИСТИНА();
ЛОЖЬ())
приобрела вид:
=И((($G$9=1)*(ДЛСТР($A$12)=10)+($G$9=2)*(ДЛСТР($A$12)=12)+ЕПУСТО($A$12)))
Еще один момент: у Вас в видео для ПЕРКЛЮЧ со значением ИСТИНА в первом аргументе для пустой клетки выдает "Эконом", а должен быть "-".
Сразу хочу спросить уважаемых форумчан, начальник выдал на гора идею, пока не пойму в какую сторону копать! Есть таблица в которой названия контрагентов, оказанная услуга, место, объём услуги и т.д., предпоследний столбец - дата выставления счёта и последний - дата оплаты. Начальник хочет чтобы строка начинала выделяться красным, если счёт не оплачен в течении трёх рабочих дней, а при последующим заполнении строки оплаты цвет менялся на жёлтый, чтобы впоследствии можно было выделить контрагентов которые хронически задерживают оплату.
Честно говоря моих знаний не хватает для решения этой задачи в полном объёме! Самый затык в том, что нужно считать не просто дни, а только рабочие!