Страницы: 1
RSS
Как можно оптимизировать формулу с условием сравнения
 
Работаю с большими объемами данных, хотелось бы сократить вычисления.
В данном случаи интересует функция "ЕСЛИ".
Разберем пример:
Код
ЕСЛИ(2+2=4;2+2;"не равно")

В данном примере, екселю приходится в случае "ИСТИНА" считать значение 2 раза, в начале чтоб понять равно оно 4м или нет, а потом чтоб вывести результат.

Вопрос, как можно оптимизировать это условие, чтоб ексель считал 1 раз? и случаи если условие РАВНО, просто выводил бы полученный результат, а не высчитывал его еще раз.

По подобному принципу работает функция "ЕСЛИОШИБКА", там пишется всего один раз условие, и если ошибка, выводится то что вы укажите, а если ошибки нет, то выводится результат выражения. такая же история и с функцией "ЕСНД", а вот подобного решения для "ЕСЛИ" я не могу найти.
 
Так ЕСЛИ(4=4;4;"не равно")   :D
Или так ЕСЛИ(4=4;4)   :D
Изменено: msi2102 - 07.04.2021 13:25:10
 
vasa666, как я понимаю, интересует не функция, а оптимизация каких-то вычислений или проверок.
Прикрепите пример отражающий вопрос

Цитата
vasa666 написал: можно оптимизировать это условие
Вывести вычисление 2+2 в отдельную ячейку
 
msi2102, это конечно все здорово, но я привел упрощенный вариант, чтоб было легче понимать ситуацию. Теперь упростите так же для случая когда и само выражение (2+2) и с чем сравнивают(4) генерируются из различных ячеек.
 
Ctrl+F3 Там имя записано.
Оптимальнее - в имя записать только суммирование. Тогда:
=ЕСЛИ(сумм=$F$3;сумм;"не равно")

P.S. А вообще, зачем эти танцы с повторным суммированием?
=ЕСЛИ(G3+H3=$F$3;$F$3;"не равно")
 
Похоже на то что я искал, не знал что в "лог_выражения" можно записать "равно"))
П.С.
разобрался, вы через "диспетчер имен сделали, но это подходит если у меня сравнение идет только с одним значением, а если постоянно разные?
 
А если разные - пишите разные и забивайте себе голову. В каждом конкретном случае оптимизация может быть разной и то, что упрощает расчеты или формулы в одном случае, будет нарушением вычислений в другом.
И еще: сокращение формулы не значит сокращение и ускорение вычислений. Часто это обратная зависимость

В показанном случае оптимизация одна - не суммировать дважды.
 
vasa666, мне не понятно, что означает:
Цитата
как можно оптимизировать это условие, чтоб ексель считал 1 раз? и случаи если условие РАВНО, просто выводил бы полученный результат, а не высчитывал его еще раз.
С чего вы взяли, что ЕСЛИ вычисляет значение дважды?
Если Вам лень забивать "Значение_если_ложь", то пропустите его и когда условие не выполняется значение будет "Ложь", поставьте пустые кавычки и будет пустота.
Если Вы считаете, что у Вас большой объем данных и компьютер здорово тормозит из-за формулы ЕСЛИ, то выполняйте часть расчетов макросами.
Из Вашего примера не понятно, что Вы хотите видеть.  
 
Код
=ПЕРЕКЛЮЧ(G3+H3;$F$3;G3+H3;"не равно")
 
как я понимаю вопрос
есть формула:
=ЕСЛИ(СсылкаНаЯчейку > Длинная_трехэтажная_формула_вычисляющая_какое_то_вполне_опре­деленное_значение; Длинная_трехэтажная_формула_вычисляющая_какое_то_вполне_опре­деленное_значение; "Все нормально")

вопрос: как в этой формуле избежать необходимости вычисления вполне определенного значения с помощью длинной трехэтажной формулы 2 раза?
(и в качестве бонуса - формула станет практически в 2 раза короче)
если условие равно vikttur, показал как это сделать:
=ЕСЛИ(СсылкаНаЯчейку = Длинная_трехэтажная_формула_вычисляющая_какое_то_вполне_опре­деленное_значение; СсылкаНаЯчейку; "Все нормально")
то что там дальше начал уточнять автор, что у него там за разные значения известно одному только автору вопроса
кому помогли мои обьяснения, можете продолжать решать этот ребус, но я бы предоставил эту возможность автору (нужно или учиться обьяснять свои задачи, или учиться решать их самостоятельно)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх