Эффективно заменить 0 на NA - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь найти способ эффективно заменить ноль на NA() в формуле Excel.Я знаю следующие работы:

=IF(FORMULA = 0, NA(), FORMULA)

Но моя проблема в том, что это приведет к тому, что FORMULA будет выполнен дважды.У меня есть случаи, когда это может быть длиннее =SUMIFS() в гигантском столе.

Так что я бы хотел:

  • Нет VBA
  • Имеется только базаFORMULA рассчитать один раз

Сначала я подумал, чтобы попытаться использовать SUBSTITUTE() для замены "0" на что-то, что вызовет ошибку значения, а затем просто обернуть все это в IFERROR(),Это, очевидно, терпит неудачу, поскольку SUBSTITUTE() не может быть принудительно (насколько мне известно) проверять совпадение полного слова (поэтому 100 вызовет ошибку).

Возможно ли это?В течение многих лет я думал, что это не так, но решил снова обдумать это.

Ответы [ 2 ]

4 голосов
/ 08 мая 2019

Общий ответ

=IFERROR(f'(f(FORMULA)), AlternateValue)

, где f(FORMUALA) возвращает ошибку (любая ошибка будет) для значений FORMULA, для которых требуется альтернативное значение.

И f'(...) является инверсией f(...), поэтому f'(f(FORMULA)) возвращает FORMULA для других значений.

Убедитесь, что первая функция применяется ко всему FORMULA. Включение в () гарантирует это.

Во-вторых, убедитесь, что обе функции применяются в правильном порядке, что также достигается с помощью ().

В этом случае вам нужно альтернативное значение для 0, чтобы вы могли использовать

=IFERROR(1/(1/(FORMULA)), NA())
0 голосов
/ 08 мая 2019

Расчет и отображение могут происходить в двух разных местах - зачем объединять операции, когда вам это не нужно?

А1 - =Formula
B1 - =If(A1 = 0, NA(),A1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...