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


23

例如,

说一个单元格的值是:

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,则在此单元格中放入零,否则我想要乘积。

似乎必须在其中两次完整显示整个表达式真是愚蠢。有什么捷径可以说:“进行此计算,如果返回一个值,请使用该值,否则请使用一些默认值?


我不确定如何正确执行操作,但请在此处查看mrexcel.com/td0110.html最后一个示例应会有所帮助
chmod

您的公式是完美的,我不确定您想要什么捷径。您可以定义一个用户定义的函数,但这只会使其更短,而不会涉及更多。
雷斯塔法里安2012年

Answers:


38

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


第一个例子正是我要寻找的。谢谢!
Jer 2012年

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))

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.