Оператор If, возвращающий исходную функцию при значении false (аналогично iferror или замене)

если я использую IFERROR, а не IF(ISERROR, я могу сохранить ввод условия дважды.

то есть

 =IFERROR(Long lookup,"not found")

гораздо предпочтительнее

 =IF(ISERROR(long_lookup),"not found",long_lookup)

когда есть длинная формула, участвующих.

однако для чего-то вроде

 =IF(long_lookup=some_condition,"outtext",long_lookup)

есть ли общая формула, где я могу ввести

 =IF2(long_lookup,some_condition,"outtext")

для ошибок. Или что-то подобное, что позволяет мне вывести оригинальную формулу, если условие не выполняется (вместо того, чтобы просто выводить FALSE).

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

a workarround является поставить формулу в столбце перед, конечно, и просто использовать

 =if(condition(a2),"out if true",A2))

но это боль

EDIT: также аналогично is =SUBSTITUTE (), но это не работает, если вся ячейка, которую вы пытаетесь заменить, также содержится в подстроке других ячеек, например, если я хотел, чтобы поиск возвращал " B "для вывода "foobar", но там была возможность возврата "партии 1". Это также не работает для пробелов.

5
задан Some_Guy
источник

1 ответов

На самом деле это очень хороший вопрос, который я бы также часто использовал, но, к сожалению, в настоящее время я не думаю, что будет общее решение, которое вы могли бы использовать.

один обходной путь должен был бы использовать функцию VBA, но он также имеет свои собственные ограничения, ниже вы можете найти короткую функцию, чтобы сделать это (конечно, если вы хотите использовать ее в широком смысле, ее необходимо улучшить, например, обработка ошибок, адаптироваться к большему оператору, а не только =):

Function IfCondition(expression as Variant, criteria as Variant, ElseExpression)
  IF expression = criteria Then
    IfCondition = expression
  Else
    IfCondition = elseExpression
  End If
End Function
0
отвечен Máté Juhász 2015-06-25 09:39:56
источник