办公 欢迎您!

如何在多个工作表查询

2023-02-27

如下图所示,工作表“1月”、“2月”、“3月”是三个月份的考试成绩。在“查询表”中根据指定月份和姓名,查询对应的分数。“查询表”的下拉列表中选择的月份不同,就要在不同的工作表中查找。除了使用查找函数vlookup外,还需搭配使用indirect函数来处理变化的查找区域。在D3单元格输入公式:=VLO

如下图所示,工作表“1月”、“2月”、“3月”是三个月份的考试成绩。

在“查询表”中根据指定月份和姓名,查询对应的分数。

“查询表”的下拉列表中选择的月份不同,就要在不同的工作表中查找。

除了使用查找函数vlookup外,还需搭配使用indirect函数来处理变化的查找区域。

在D3单元格输入公式:

=VLOOKUP(C3,INDIRECT("'"&B3&"'!$A$1:$B$7"),2,FALSE)

公式解析:

(1)如果本例中查询月份始终不变,比如在工作表“1月”中查找指定姓名的分数,在D3单元格输入公式:

=VLOOKUP(C3,'1月'!$A$1:$B$7,2,FALSE)

查找区域中的感叹号“!”是引用的工作表名称和单元格区域之间的分隔符。

(2)vlookup函数的查找区域是不确定的,需要使用indirect函数生成查找区域。

indirect函数可以将文本转化为引用。比如在B1单元格输入公式:="B3",在B1单元格内显示文本“B3”。

如果在B1单元格输入公式:=INDIRECT("B3"),返回的是B3单元格的值“abc”。

indirect函数可以将文本转为引用。对于indirect函数来说,括号内的"B3"不再是文本B3,而是单元格B3。公式:=INDIRECT("B3")等同于公式:=B3。

回到我们的例子中,如果在查找区域外套上一个indirect函数,公式也能返回正确的结果。

如下图所示,在D3单元格输入公式:

=VLOOKUP(C3,INDIRECT("'1月'!$A$1:$B$7"),2,FALSE)

进一步的,indirect函数中的文本“1月”不直接输入,而是引用B3单元格,这样当B3单元格选择的月份变化时,indirect函数返回的引用区域也会变化。因此D3单元格的公式变形为:

=VLOOKUP(C3,INDIRECT("'"&B3&"'!$A$1:$B$7"),2,FALSE)

(3)vlookup函数查找不到值时返回错误值#N/A。可以使用IFNA函数,设置查找不到值时返回“查找不到”。