【问题标题】:Efficiently replace 0 with NA用 NA 有效地替换 0
【发布时间】:2019-05-08 18:48:11
【问题描述】:

我正在尝试找到一种有效在 Excel 公式中将零替换为 NA() 的方法。我知道以下作品:

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

但我的问题是这会导致FORMULA 执行两次。我有一些情况,在一张巨大的桌子上这可能是一个更长的=SUMIFS()

所以我想要:

  • 没有 VBA
  • 基数 FORMULA 只计算一次

我一开始想尝试使用SUBSTITUTE() 将“0”替换为会触发值错误的东西,然后将所有这些都包含在IFERROR() 中。这显然失败了,因为不能强制SUBSTITUTE()(据我所知)检查完整的单词匹配(所以 100 会触发错误)。

这可能吗?多年来我一直认为它不是,但决定重新考虑一下。

【问题讨论】:

  • 所以:=IFERROR(EXP(LN(FORMULA)),NA())
  • 您可以随时创建计算列。
  • 我经常会在自己的工作中做计算列,但是当我在他们的工作中推荐它时,人们会很生气。很棒的发现,@ScottCraner。我随便找了很多次,从来没有找到那个帖子。你认为我应该删除吗?或者这样做有助于其他人找到重复项?
  • 如果您可以使用#NUM 而不是#N/A,您可以将其缩短为EXP(LN(FORMULA))
  • =IFERROR(1/(1/(FORMULA)),NA())怎么样

标签: excel excel-formula


【解决方案1】:

一般的答案是

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

其中f(FORMUALA) 为您想要替代值的FORMULA 值返回错误(任何错误都会发生)。

f'(...)f(...) 的倒数,所以f'(f(FORMULA)) 返回FORMULA 以获得其他值。

确保将第一个函数应用于整个FORMULA。将其包含在 () 中可以保证这一点。

其次,确保两个函数以正确的顺序应用,同样使用()实现。

在这种情况下,您需要 0 的备用值,以便您可以使用

=IFERROR(1/(1/(FORMULA)), NA())

【讨论】:

  • 这很棒。有时我发现没有所有嵌套括号的公式更容易阅读和编辑,所以我可能会使用=IFERROR(FORMULA^(-1)^(-1), NA())
  • 您需要确保第一个函数应用于整个FORMULA。将它包含在 () 中可以保证这一点。其次,您需要确保以正确的顺序应用这两个函数,也可以使用 () 来实现。您的替代方案需要是 ((FORMULA)^-1)^-1
【解决方案2】:

计算和显示可以在两个不同的位置进行 - 为什么在不需要时合并操作?

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

【讨论】:

    猜你喜欢
    • 2020-02-22
    • 2014-02-08
    • 2012-06-17
    • 2017-11-27
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多