在 Excel 中,如果我的公式返回 #NA,我可以提供“默认值”吗?

在 Excel 中,如果我的公式返回 #NA,我可以提供“默认值”吗?

例如,

假设一个单元格的值是:

IF(ISNA(VLOOKUP(A3,somesheet!G:J,3,FALSE) * VLOOKUP(A3,someothersheet!A:D,4,FALSE)), 0, VLOOKUP(A3,somesheet!G:J,3,FALSE) * VLOOKUP(A3,someothersheet!A:D,4,FALSE))

这里,我想要两个 VLOOKUP 的乘积。但有些行可能不存在,所以它可能会返回 NA。如果返回 NA,则只需在此单元格中输入零,否则我想要乘积。

你必须将整个表达式写两次,这似乎很愚蠢。有没有捷径可以让我这样说“进行这个计算,如果返回一个值,则使用该值,否则使用某个默认值?”

答案1

如果你有 Excel 2007 或更高版本,你可以使用 IFERROR 函数来避免重复

=IFERROR(VLOOKUP(A3,somesheet!G:J,3,FALSE)*VLOOKUP(A3,someothersheet!A:D,4,FALSE),0)

或者您可以使用早期版本中类似的解决方法

=LOOKUP(9.9E+307,IF({1,0},0,VLOOKUP(A3,somesheet!G:J,3,FALSE)*VLOOKUP(A3,someothersheet!A:D,4,FALSE)))

答案2

如果您检查第一个查找值是否为 NA,然后检查第二个查找值,如果它们都有效则将它们相乘,这对您来说可能更有意义。

=IF(OR(ISNA(VLOOKUP(A3,somesheet!G:J,3,FALSE)),ISNA(VLOOKUP(A3,somesheet!A:D,4,FALSE))), 0, VLOOKUP(A3,somesheet!G:J,3,FALSE) * VLOOKUP(A3,somesheet!A:D,4,FALSE))

这增加了更多的复杂性,但可能不会冒犯程序员敏感的情感。;-)

答案3

为了消除表达式的重复,您可以使用LETExcel 中的函数。OP 的公式将是

LET(val, VLOOKUP(A3,somesheet!G:J,3,FALSE) * VLOOKUP(A3,someothersheet!A:D,4,FALSE), IF(ISNA(val), 0, val))

我意识到在发布时 OP 可能还没有这个解决方案。对于以后搜索此主题的任何人,您可以在任何条件下使用它,而不仅仅是ISNAand ISERROR

相关内容