Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Вопрос приоритетов или проблемы с функцией ИЛИ

Автор grits, 12.11.2012, 18:36

« назад - далее »

grits

При использовании инструмента под названием "Вычислить формулу" в прилагаемом примере есть определенные проблемы использования вложенной функции ИЛИ в функции ЕСЛИ.

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

Вопрос: почему при расчете результата функция ИЛИ отдает приоритет #ДЕЛ/0!, вместо отдачи его функции, которая должна предостеречь от этой самой ошибки?

Т.е. налицо приоритетность ошибки перед способом защиты от этой ошибки.

Наверное вопрос скорее риторический, просто хочеться докопаться до ИСТИНЫ в прямом и переносном значении  ;D

_Boroda_

Да все просто - второй аргумент у ИЛИ (D10<0,5) дает при вычислении ошибку (потому, что Вы ошибку сравниваете с числом), а ИЛИ это примерно то же самое, что плюс. И смотрите, что получается - первый аргумент у ИЛИ равен 1, второй - ошибке, Вы их складываете. Конечно же, получается ошибка.
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Serge 007

Цитата: grits от 12.11.2012, 18:36
...почему при расчете результата функция ИЛИ отдает приоритет #ДЕЛ/0!, вместо отдачи его функции, которая должна предостеречь от этой самой ошибки?
Функция ИЛИ относится к категории логических и не имеет непосредственного отношения к работе со значениями ошибки. Среди логических функций (начиная с Excel 2007) за работу со значениями ошибки отвечает функция ЕСЛИОШИБКА().
А вот среди функций категории "Проверка свойств и значений" есть несколько, которые предназначены именно для работы со значениями ошибки, это функции такие как:
ЕНД()
ЕОШ()
ЕОШИБКА()
ТИП.ОШИБКИ()
а так же
ТИП(), которую тоже можно использовать в этих целях

Вот несколько примеров корректного "отлавливания" значения ошибки для Вашего случая:
=ЕСЛИОШИБКА(ВПР(D10;{0;1:0,5;0,5:3;0};2);1)
=ЕСЛИ(ЕОШ(D10);1;ВПР(D10;{0;1:0,5;0,5:3;0};2))
=ЕСЛИ(ТИП(D10)=16;1;ВПР(D10;{0;1:0,5;0,5:3;0};2))
=ЕСЛИ(ЕОШИБКА(D10);1;ВПР(D10;{0;1:0,5;0,5:3;0};2))
=ЕСЛИ(ТИП.ОШИБКИ(D10)=2;1;ВПР(D10;{0;1:0,5;0,5:3;0};2))
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

grits

Цитата: _Boroda_ от 12.11.2012, 19:27
Да все просто - второй аргумент у ИЛИ (D10<0,5) дает при вычислении ошибку (потому, что Вы ошибку сравниваете с числом), а ИЛИ это примерно то же самое, что плюс. И смотрите, что получается - первый аргумент у ИЛИ равен 1, второй - ошибке, Вы их складываете. Конечно же, получается ошибка.
_Boroda_, благодарствую за понятное сравнение функции ИЛИ с "плюсом". Теперь точно не забуду.  :)

Serge 007, а Вам отдельное спасибо, за то, что открываете мне новые возможности использования функции ВПР. Никогда бы не подумал, что таблицу можно описать прямо в формуле.... век живи, век учись  ::)