
本问题实际分两步:1、根据不同客户选定对应的数据区域;2、在选定的数据区域内根据单条件查找数据。
本问题第一步稍微复杂一点,使用indirect函数可以实现“根据不同客户选定对应数据区域”。
效果如下:
数据区域如下(A客户数据表里面的名称和材料都有“A”前缀,同理,B客户是“B”前缀,C客户是“C”前缀):
D3的完整公式如下:
公式解析:
1、根据观察,三个客户的数据表都在“徐徐不倦-数据.xlsx”工作簿内,三个数据表一一对应:
A客户对应“A客户数据表”、B客户对应“B客户数据表”、C客户对应“C客户数据表”,即
显示表格内B列数据连接上“数据表”这三个字就是工作表的名称。
对此,使用indirect函数建立动态引用区域:
如果B3=“A客户”,则函数返回区域“'[徐徐不倦-数据.xlsx]A客户数据表'!$B$2:$F$11”;
如果B3=“B客户”,则函数返回区域“'[徐徐不倦-数据.xlsx]B客户数据表'!$B$2:$F$11”;
如果B3=“C客户”,则函数返回区域“'[徐徐不倦-数据.xlsx]C客户数据表'!$B$2:$F$11”。
2、引用方式的问题解决了,剩下的单条件查询就比较简单了,用Vlookup、lookup或index+match都可以。
本例子中Vlookup公式最短,讲解起来也最直观,故使用了Vlookup,其余函数情况请自行测试。
如果这一步还有疑问,留个言,我再补充。
