INDIRECT函数使VLOOKUP函数实现多表查询
当有很多不同的表时,使用VLOOKUP函数从用户指定的表中获取值。
如图1所示,在名为“东区”的表中存储着水果及其单价。
图1
在图1中,单元格E3是输入单元格,在其中输入要查找单价的水果名称,示例中为“香梨”。
在单元格E4中是查找水果单价的公式:
=VLOOKUP(E3,东区,2,TRUE)
可以看出,VLOOKUP函数从“东区”表中获取了相应的值。
然而,在其他区中水果的售卖价格不一定相同,如图2所示。
图2
此时,我们可以再增加一个输入单元格,用于输入水果所在的区,如图3所示。
图3
接着,更新单元格E4中的公式为:
=VLOOKUP(E3,E2,2,TRUE)
但是,得到的确是出错信息,如图4所示。
图4
这表明,VLOOKUP函数不会将单元格中的内容识别为表的名称。
技巧
实际上,我们此时需要其他函数的辅助,才能达到我们的目的。
技巧:使用INDIRECT函数作为第2个参数
INDIRECT函数将单元格中的文本内容转换为有效的引用。本例中,会将单元格E2中的文本“东区”转换成相应名称的表的区域。
修改单元格E4中的公式为:
=VLOOKUP(E3,INDIRECT(E2),2,TRUE)
得到正确结果,如图5所示。
图5
将输入单元格E2的内容修改为“北区”,在单元格E4中将自动更新为北区香梨的单价,如图6所示。
图6
结语
在使用VLOOKUP函数时,将INDIRECT函数作为其第2个参数并配合名称,能够实现在不同的表中查找数据。