Функция IF - есть ли способ избежать повторения формулы

Не могу поверить, что я этого не знаю, но есть ли способ избежать повторения формулы в выражении if, если логический тест зависит от нее?

то есть.

= IF ((формула SUMIFS) = 0, "", формула SUMIFs)

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

Ответ 1

Вы можете присвоить формулу Имя и использовать Имя.............. См.:

Присвоение имени формуле

Соответствующая выдержка -

Например, допустим, что мы часто используем формулу типа: =SUM(A1:A100)-SUM(B1:B100), и это находится в A101 и копируется во многих столбцах в строке 101. В этом случае было бы лучше создайте собственную формулу, которая делает это в каждой ячейке в строке 101. Здесь как:

1) Выберите ячейку A101 (это жизненно важно).

2) Перейдите в раздел "Вставка" > "Имя" > "Определить и в поле" Имена в рабочей книге ": SalesLessCosts

3) Теперь нажмите поле" Относится к "и введите: =SUM(A1:A100)-SUM(B1:B100), затем нажмите Добавить.

Теперь вы можете заменить формулу в ячейке A101 на: =SalesLessCosts. Вы также можете скопировать это по строке 101, и изменит ее относительный ссылки так же, как и формула =SUM(A1:A100)-SUM(B1:B100). причина в том, что все это связано с тем, что мы выбрали A101 раньше переход в Insert > Name > Определение и использование относительных ссылок в =SUM(A1:A100)-SUM(B1:B100), когда мы добавили его в поле" Относится к".

Ответ 2

Вы можете вызвать ошибку, например #DIV/0!, а затем использовать IFERROR, например.

=IFERROR(1/(1/SUMIFS_formula),"")

Ответ 3

Если все, что вам нужно сделать, это скрыть нули, есть простой способ:

  • Выберите все ячейки, в которых вы хотите скрыть нули
  • Переход к форматированию пользовательских номеров
  • Установите формат в "General; General;"

Пользовательское форматирование имеет структуру [положительные числа], [отрицательные числа], [нули] Запуская последнюю часть, вы эффективно скрываете нули, но показываете все остальное.

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

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

Ответ 4

Только что нашел это, использовав определенное количество кофеина по этой проблеме. Попробуйте использовать функцию SUBSTITUTE следующим образом:

=SUBSTITUTE( VLOOKUP( H4; $D$5:$E$8; 2; 0 ); $H$1; $I$1 )

Вот пример:

Пример

Здесь формула, которую я не хочу повторять дважды, - это функция VLOOKUP. Результатом VLOOKUP является строка, найденная в другой таблице (например: "Зеленый" ).

Я хочу проверить, соответствует ли эта строка определенному строковому значению в $H$1 (здесь, "Желтый" ).

  • Если это так, SUBSTITUTE заменяет его на $I$1 (нужная строка ошибки. Здесь "FORBIDDEN" ).
  • Если это не так, отображается строка результата VLOOKUP (нормальный разрешенный выход, например "Зеленый" ).

Моя фактическая формула довольно длинная, поэтому я не хочу писать ее дважды. Я также не хочу использовать две разные ячейки, потому что я уже применяю эту формулу на 10 столбцах, то есть я должен добавить дополнительные 10 столбцов, чтобы заставить ее работать.

Ответ 5

Вот хак - в зависимости от того, интересуетесь ли вы отображаемым значением или вам нужно использовать значение в другой формуле:

Поместите свою формулу SUMIF в ячейку (без части IF)

Создайте правило условного форматирования, которое устанавливает цвет шрифта в цвет фона, когда значение ячейки 0

И эй престо, вы получите желаемый результат.

Как я уже сказал - это взлом, но он предотвращает двойную оценку.

Нет "чистого" решения, о котором я знаю.

Ответ 6

В некоторых сценариях MAX() или MIN() могут выполнять замечательную работу.

Например, примерно так:

=IF(SUMIFSformula>0,SUMIFSformula, 0)

Можно сократить до этого:

=MAX(0,SUMIFSformula)