Как или чем заменить функцию ЕСЛИ в формулах Excel

Функция ЕСЛИ позволяет решать большинство задач в Excel, вычисления в которых выполняются не последовательно, шаг за шагом, а с некоторыми ветвлениями. Например, был определен некоторый коэффициент, от значения которого полностью зависит ход дальнейших расчетов. Кроме того, часто требуется выполнить какую-либо операцию над диапазоном данных (суммированием, вычисление среднего значения и т. д.) с использованием какого-либо критерия. Например, найти сумму чисел из диапазона, значения которых не менее 10.

Существует как минимум три способа заменить использование функции ЕСЛИ:

  1. Заменить данную функцию другой встроенной функцией Excel, при этом необязательно логической. Например, одну и ту же задачу можно решить тремя разными способами (с использованием формулы ЕСЛИ, с помощью СУММЕСЛИ или без логических функций вовсе), что будет показано в одном из примеров.
  2. Использовать простейшие логические конструкции в связке с арифметическими действиями.
  3. Создание пользовательских функций с помощью VBA.

Примечание: синтаксис функции ЕСЛИ достаточно прост, поэтому избегать ее использования при решении несложных задач не нужно. Многие формулы с использованием ЕСЛИ выглядят просто и наглядно. Важными критериями итоговых формул является их краткость и понятность. Длинные формулы с большим количеством вложенных функций могут ввести в недоумение других пользователей или в будущем самих их создателей. Если критериев проверки слишком много, лучше создать пользовательскую функцию на VBA, тщательно протестировав ее поведение в различных ситуациях (насколько корректны результаты при различных условиях).

Примеры замены функции ЕСЛИ в Excel с помощью формул

Пример 1. В таблице Excel хранятся данные о доходах компании за каждый месяц (обозначен номером) прошедшего года. Реализовать алгоритм расчета суммы доходов за любых несколько месяцев года без использования функции ЕСЛИ в Excel.

Вид исходной таблицы данных:

Пример 1.

Для расчетов суммы доходов за любой из возможных периодов в ячейке C3 запишем следующую формулу:

Описание аргументов функции СМЕЩ:

  • A6 – ячейка, относительно которой ведется отсчет;
  • ПОИСКПОЗ(A3;A7:A18;0) – функция, возвращающая ячейку, с которой будет начат отсчет номера месяца, с которого ведется расчет суммы доходов за определенный период;
  • 1 – смещение по столбцам (нас интересует сумма доходов, а не номеров месяцев);
  • ПОИСКПОЗ(B3;A7:A18;0)-ПОИСКПОЗ(A3;A7:A18;0)+1 – выражение, определяющее разность между указанными начальной и конечной позициями в таблице по вертикали, возвращающее число ячеек рассматриваемого диапазона;
  • 1 – ширина рассматриваемого диапазона данных (1 ячейка).

Функция СУММ принимает в качестве аргумента диапазон ячеек, возвращаемый функцией СМЕЩ, и вычисляет сумму содержащихся в них значений.

Для примера приведем результат расчетов с 3 по 7 месяц:

результат расчетов.

Для сравнения, рассмотрим вариант расчета с использованием функции ЕСЛИ. Формула, которая приведена ниже, должна быть выполнена в качестве формулы массива (для ввода CTRL+SHIFT+Enter), а для определения суммы доходов для различных периодов ее придется видоизменять:

Диапазон ячеек, для которых будет выполняться функция СУММ, определяется двумя условиями, созданными с использованием функций ЕСЛИ. В данном случае расчет производится для месяцев с 3 по 7 включительно. Результат:

с использованием функции ЕСЛИ.

Как видно, полученные результаты совпадают. Несмотря на кажущуюся сложность формулы с использованием функции СМЕЩ, она является более простой, наглядной и не требует внесения изменений для каждого нового расчета.



Формулы решений при нескольких условиях без функции ЕСЛИ

Пример 2. В таблице Excel содержатся значения вероятностей попадания в цель для стрелков из трех различных видов оружия. Рассчитать вероятность попадания в цель хотя бы из одного оружия для каждого стрелка. В некоторых ячейках содержатся ошибочные данные (значения взяты не из диапазона допустимых значений для вероятности). Для таких случаев рассчитать вероятность как 0. При условии, что в формуле нельзя использовать логическую функцию ЕСЛИ.

Вид исходной таблицы:

Пример 2.

Для расчета вероятности используем формулу P(A)=1-q1q2q3, где q1,q2 и q3 – вероятности промахов (событий, противоположным указанным, то есть попаданию в цель). Используем следующую формулу:

Часть формулы «И(B3>=0;B3<=1;C3>=0;C3<=1;D3>=0;D3<=1))» необходима для выполнения операции сравнения содержащегося в каждой ячейке значения с диапазоном допустимых (от 0 до 1). Функция ИСТИНА возвращает логическое ИСТИНА, если все выражения вернули результат ИСТИНА, и ЛОЖЬ, если хотя бы одно из проверяемых выражений вернуло ЛОЖЬ. Поскольку за данным выражением следует знак «*» (умножение), Excel автоматически преобразует полученное логическое значение к числовому (1 или 0).

Результаты расчета для всех стрелков:

Формулы без функции ЕСЛИ.

Таким образом, расчет производится только в том случае, если все три ячейки A, B и C содержат корректные данные. Иначе будет возвращен результат 0.

Пример кода макроса как альтернативная замена функции ЕСЛИ

Пример 3. В МФО выдают кредиты на срок от 1 до 30 дней на небольшие суммы под простые проценты (сумма задолженности на момент выплаты состоит из тела кредита и процентов, рассчитанных как произведение тела кредита, ежедневной процентной ставки и количества дней использования финансового продукта). Однако значение процентной ставки зависит от периода, на который берется кредит, следующим образом:

  • От 1 до 5 дней – 1,7%;
  • От 6 до 10 дней – 1,9%;
  • От 11 до 15 дней – 2,2%;
  • От16 до 20 дней – 2,5;
  • Свыше 21 дня – 2,9%.

Выполнить расчет суммы к возврату для нескольких клиентов организации.

Вид исходной таблицы данных:

Пример 3.

Вместо проверки множества условий с использованием функции ЕСЛИ напишем простую пользовательскую функцию с помощью макроса (ALT+F11). Исходный код пользовательской функции MFODebt:

Public Function MFODebt(amount As Double, period As Double) As Double
Dim interest As Double
Select Case period
    Case 1 To 5
        interest = 0.017
    Case 6 To 10
        interest = 0.019
    Case 11 To 15
        interest = 0.022
    Case 16 To 20
        interest = 0.025
    Case 21 To 30
        interest = 0.029
End Select
MFODebt = amount + amount * interest * period
End Function

Для определения размера процентной ставки используется простая и наглядная конструкция Select Case. Воспользуемся созданной функцией для расчетов:

=MFODebt(B3;C3)

«Растянем» формулу на остальные ячейки и получим следующие результаты:

MFODebt.

Как видно, формулы с большим числом проверок лучше реализовывать в виде пользовательских функций.


en ru