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

Jer*_*Jer 23 worksheet-function microsoft-excel

例如,

假设一个单元格的值是:

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))
Run Code Online (Sandbox Code Playgroud)

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

你必须在那里有两次完整的表达似乎很愚蠢。是否有一些快捷方式我可以说“做这个计算,如果它返回一个值,使用那个,否则使用一些默认值?

bar*_*ini 41

如果您有 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)))


Nat*_*itt 5

如果您检查 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))
Run Code Online (Sandbox Code Playgroud)

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