Страницы: 1
RSS
Аналог формулы ЕСЛИОШИБКА но не для ошибок, а для других условий
 
Здравствуйте. Есть известная формула ЕСЛИОШИБКА, которая подставляет нужное значение в случае ошибки. Подскажите, есть ли аналогичная формула, где можно указывать другие условия (кроме ошибки), чтобы подставлялось нужное значение? Можно конечно использовать обычное ЕСЛИ, но в этом случае надо дублировать условие, которое само по себе очень длинное.

Например, есть формула:
Код
=ЕСЛИ(А1=0;100;200)

Допустим, мне надо, чтобы в случае полученного значения 100, выводилось "Правильно". Можно ли это сделать в более коротком формате, кроме традиционного?:

Код
=ЕСЛИ(ЕСЛИ(А1=0;100;200)=100;"Правильно";ЕСЛИ(А1=0;100;200))

То есть чтобы не повторять внутреннее условие ЕСЛИ(А1=0;100;200) два раза? Чтобы сразу было, если дальше формула приводит к значению 100, то "Правильно", иначе выполняется условие ЕСЛИ(А1=0;100;200) ?

По аналогии с формулой ЕСЛИОШИБКА хотелось бы получить такую логику:
Код
=ЕСЛИ100(ЕСЛИ(А1=0;100;200);"Правильно")
Можно ли что-то подобное сделать без макроса?
 
Я что-то может ночью совсем уж тупой, но я в упор не понимаю..
Есть ячейка A1. В ней есть какие-то значения - это понятно.
На основании этого значения хочется вывести другое значение? Куда? В ячейку B1 например? А что там в итоге хочется получить, 100 или "Правильно"?
Ну т.е. =ЕСЛИ(A1=0, "Правильно", "Неправильно") чем не подходит?
 
может я что то не понимаю, но почему сразу вместо "100" и "200" не писать "правильно"/"неправильно"
Код
=ЕСЛИ(А1=0;"правильно";"неправильно")
 
Сергей Овчаров,  чтоб немного иллюзию развеять IFERROR (ЕСЛИОШИБКА) это более удобная и эффективная запись
IF(ISERROR(<expression1>);<expression1>;<expression2>)
Кроме краткости
IFERROR(<expression1>;<expression2>) растет и эффективность так как <expression1>, не просчитывается дважды, сперва для анализа на ошибку. а потом для значения.

Могу допустить, что пример сильно упрощен, но это реально приводит к решению, которое не требует чего экстраординарного.
По вопросам из тем форума, личку не читаю.
 
Цитата
Сергей Овчаров написал:
Можно ли это сделать в более коротком формате, кроме традиционного?
кроме как написать собственную UDF - нет. плюс
Цитата
Сергей Овчаров написал:
получить такую логику
а как в случае со сложной формулой понять, что нужно ориентироваться именно на значение 100? Что если у Вас там будет не ЕСЛИ, а какая-нибудь ВПР или несколько ЕСЛИ? Парсить формулу и пытаться угадать какой результат нужен? Не лучший вариант. Лучше задавать самостоятельно какое значение должно вернуть выражение. Тогда можно состряпать что-то вроде:
Код
Function IfCondition(v, cond, value)
    If v = cond Then
        IfCondition = value
    Else
        IfCondition = v
    End If
End Function
а вызывать с листа так:
=IfCondition(B1;100;"Правильно")
при условии, что Ваша формула (=ЕСЛИ(A1=0;100;200)) в ячейке В1.
или так
=IfCondition(ЕСЛИ(A1=0;100;200);100;"Правильно")
Изменено: Дмитрий(The_Prist) Щербаков - 05.02.2021 09:06:26
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
По-моему, желание ТСа вполне понятно: не прописывать длинное условие второй раз, чтобы вывести его в одном из аргументов ЕСЛИ. Это удобно и не надо 2 раза считать одно и тоже
Понравилось решение от «The_Prist». Прикрутил свистоперделок и сделал пример
Изменено: Jack Famous - 05.02.2021 10:45:04 (Коррекция кода)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Дмитрий(The_Prist) Щербаков, спасибо! Интересный вариант, попробую протестировать на одной из таблиц.
Jack Famous, тоже большое спасибо за ответ! Вы совершенно верно поняли, что мне требовалось, правда я думал, что есть какой-то способ сделать это без макроса. У меня в разных файлах возникает необходимость такого решения, поэтому переносить в каждый из таких файлов макрос наверно не совсем правильно. Может ошибаюсь. В любом случае, как-нибудь попробую Ваш вариант хотя бы на одной таблице.
Изменено: Сергей Овчаров - 06.02.2021 01:40:34
 
Сергей Овчаров,
1.Без макросов можно рассчитать выражение отдельно и при проверке ссылаться на ячейку с этим расчётом
2.чтобы в любом файле (даже "*.xlsx") работал ваш набор макросов, можно сделать надстройку (смотрите тут в Приёмах или у The_Prist'а на сайте "excel-vba")
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Без макросов можно рассчитать выражение отдельно
запихнув его в имя, это не уменьшит расчетную нагрузку, но сократит формулу.
все зависит от задачи например решит вопрос с выводом нужного
=TEXT(IF(A1=0;100;200);"[=100]""Правильно""")
а  нужно ли потом считать  - вопрос второй
также указанный формат можно использовать в пользовательском формате
Изменено: БМВ - 06.02.2021 10:37:07
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх