Перехват ошибок в формулах функцией ЕСЛИОШИБКА (IFERROR)

Тот, кто никогда не ошибался - опасен.
(Книга самурая)

Ошибки случаются. Вдвойне обидно, когда они случаются не по твоей вине. Так в Microsoft Excel, некоторые функции и формулы могут выдавать ошибки не потому, что вы накосячили при вводе, а из-за временного отсутствия данных или копирования формул "с запасом" на избыточные ячейки. Классический пример - ошибка деления на ноль при вычислении среднего:

Ошибка деления на ноль

Причем заметьте, что итоги в нашей таблице тоже уже не считаются - одна ошибка начинает порождать другие, передаваясь по цепочке от одной зависимой формулы к другой. Так что из-за одной ошибочной ячейки, в конце концов, может перестать работать весь расчет.

Для лечения подобных ситуаций в Microsoft Excel есть мегаполезная функция ЕСЛИОШИБКА (IFERROR), которая умеет проверять заданную формулу или ячейку и, в случае возникновения любой ошибки, выдавать вместо нее заданное значение: ноль, пустую текстовую строку "" или что-то еще.

Синтаксис функции следующий:

=ЕСЛИОШИБКА(Что_проверяем; Что_выводить_вместо_ошибки)

Так, в нашем примере можно было бы все исправить так:

Перехват ошибки функцией ЕСЛИОШИБКА IFERROR

Все красиво и ошибок больше нет.

Обратите внимание, что эта функция появилась только с 2007 версии Microsoft Excel. В более ранних версиях приходилось использовать функции  ЕОШ (ISERROR) и ЕНД (ISNA). Эти функции похожи на ЕСЛИОШИБКА, но они только проверяют наличие ошибок и не умеют заменять их на что-то еще. Поэтому приходилось использовать их обязательно в связке с функцией проверки ЕСЛИ (IF), создавая вложенные конструкции типа:

Перехват ошибок в функциями ЕСЛИ и ЕОШ

Такой вариант ощутимо медленне работает и сложнее для понимания, так что лучше использовать новую функцию ЕСЛИОШИБКА, если это возможно.

 


20.03.2017 10:04:02
Николай,привет!!!
очень радует твои частые обновления в последнее время!!!
твой сайт и вся твоя деятельность достойна уважения и благодарности !!!
я с твоим сайтом , а точнее с твоими приемами  делаю карьеру  экономиста вот  уже 4 года!!!!)
еще раз спасибо и шалом из Израиля!!!)))
20.03.2017 11:09:14
26.03.2017 20:54:34
Аль лё давар ;)
Второй вариант для старых версий начиная суперкалка и потом с винды 3.1 делал простой формулой без заморочек: =ЕСЛИ(В2=0;0;С2/В2), соответственно в суперкалке для ДОС писалось на англицком.
14.04.2017 14:47:49
В работе часто использую проверку ЕСЛИОШИБКА в сочетании с BПР:
=ЕСЛИОШИБКА(ВПР(…..);"Что будет")

Очень помогает!
13.06.2018 13:50:09
Приветствую Вас, Николай! Не подскажите какой код, у данной функции? Мне для общего развития, а найти нигде не могу.
Наверх