VLOOKUP() 到不同工作表上的表,返回 #N/A 错误

VLOOKUP() 到不同工作表上的表,返回 #N/A 错误

我有 2 张桌子,每日入场

每日入场

和总结

概括

BQ20我的汇总表中的公式目前是:

=IF(VLOOKUP(BQ5,Table11[DATE],1,FALSE),VLOOKUP('SUMMARY (NEW)'!B20,'DAILY ENTRY'!A:H,8,FALSE),"")

Table11[DATE]只是A每日入账表中的列。

我试图从每日输入表中选取COSTQTY值到汇总表中。但是,当我使用上述公式时,我得到了一个#N/A错误。

尝试了一周才成功。我使用的公式错误吗?

答案1

VLOOKUP()通过查找其第一个参数来工作第一的第二个参数中指定范围的列。

您的第二个参数的第一列应该是ITEM列,而不是表的第一列。

修正后的公式为BQ20

=IF(VLOOKUP(BQ5,Table11[DATE],1,FALSE),VLOOKUP('SUMMARY (NEW)'!B20,Table11[[ITEM]:[COST]],5,FALSE),"")


然而,这一公式仍然存在根本缺陷。惯于根据日期选择正确的项目,因为两者之间没有、也不可能有联系VLOOKUP()。(尝试这样做会导致#N/A错误。)

解决此问题的一种方法是使用数组和SUMPRODUCT()函数:

=SUMPRODUCT(Table11[COST]*(Table11[DATE]=$BQ$5)*(Table11[ITEM]=$B20))

注意事项:

  • 仅当需要查找的值是数字时,此简单公式才有效。

  • 仅当每个日期的项目都是唯一的时它才能正常工作。

这两个限制都可以通过更复杂的公式版本来克服。

编辑:

正如OP所发现的,有一个与上述公式等效的公式,它使用SUMIFS()而不是SUMPRODUCT()

=SUMIFS(Table11[COST],Table11[DATE],$BQ$5,Table11[ITEM],$B20)

同样的注意事项也适用于该公式。



还有一种替代解决方案使用VLOOKUP(),但它需要一个辅助列。

在每日条目表中添加一个辅助列:

工作表截图

在该列的所有单元格中输入以下公式Helper

=Table11[[#This Row],[DATE]]&Table11[[#This Row],[ITEM]]

在中输入以下公式BQ20

=VLOOKUP($BQ$5&$B20,Table11[[Helper]:[COST]],9,FALSE)

请注意,此公式可以正确地处理非数字值和非唯一项。

相关内容