VLOOK函数一对多多对多查询.docx
《VLOOK函数一对多多对多查询.docx》由会员分享,可在线阅读,更多相关《VLOOK函数一对多多对多查询.docx(3页珍藏版)》请在冰豆网上搜索。
VLOOK函数一对多多对多查询
最简单的一对多、多对多查询
今天和大家分享一组特别简单的方法,也能实现一对多、多对多的数据查询需要。
先看数据,是一份各部门的员工信息表:
咱们首先要完成的是:
一对多查询
一对多查询,就是符合条件的有多个结果。
本例中,咱们要根据G2单元格指定的部门,提取出所有财务部的人员信息。
步骤1
在D2单元格输入以下公式,向下拖动复制公式:
=(A2=G$2)+D1
(A2=G$2)部分,用A列的部门与G2单元格指定的部门进行对比,如果相同,返回逻辑值TRUE,否则返回逻辑值FALSE。
然后将逻辑值与前一个单元格中的数值相加。
在四则运算中,TRUE的作用相当于1,FALSE的作用相当于0。
也就是如果部门条件符合了,D列的数值就增加1,否则还等于前一个数值。
注意观察,1、2、3、4……这些序号首次出现的行,就是符合条件的记录。
步骤2
F6单元格输入以下公式,向下向右拖动:
=IFERROR(INDEX(A:
A,MATCH(ROW(A1),$D:
$D,0)),"")
这个公式稍长了一点,咱们拆解看看:
先说说ROW(A1)部分:
ROW函数的作用是返回参数的行号,ROW(A1)结果就是A1的行号1。
当公式向下复制时,ROW(A1)会依次变成ROW(A2)、ROW(A3)……,最终得到递增的序号1、2、3……,结果用作MATCH函数的查找值。
再看MATCH(ROW(A1),$D:
$D,0)部分。
MATCH函数的作用是查询指定内容在一行或一列中首次出现的位置。
这里要查询的内容是ROW(A1)的结果(也就是数值1)在D列首次出现的位置,查询结果为2。
公式向下复制时,会依次查询1、2、3……在D列首次出现的位置。
得到位置信息了,接下来再使用INDEX函数在A列返回对应位置的内容:
INDEX(A:
A,MATCH(ROW(A1),$D:
$D,0))
当公式一直向下复制时,增加的序号在D列找不到了,公式会返回错误值,所以在最外层加上IFERROR函数,将错误值转换为空文本""。