一个辅助列,搞定一对多、多对多查询

 

一对多、多对多的数据查询,其实很简单...



小伙伴们好啊,前段时间给大家分享了一期关于数据查询的经典数组公式一对多、多对多查询经典公式,但是很多小伙伴说,数组公式太复杂,直接看晕了


今天老祝和就和大家分享一组,特别简单的方法,也能实现一对多、多对多的数据查询需要。

先看数据,是一份各部门的,员工信息表:

咱们首先要完成的是:
一对多查询
一对多查询,就是符合条件的有,多个结果。本例中,咱们要根据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函数,将错误值转换为空文本""。

接下来咱们再,看看如何实现:
多对多查询
多对多查询,就是根据多个条件返回,多个指定条件的内容。接下来要根据g2单元格指定,的部门和g3单元格指定的性别,提取出所有财务部的女性,人员信息。

咱们只要简单修改一下d2,单元格的公式就可以了,f列的原有的,公式不用管它:

=(A2=G$2)*(C2=G$3)+D1
看出门道了吗?多个条件同时符合,就是条件1*条件2
多个条件符合其一
现在更进一步,要根据g2和g3单元格,指定的部门,提取出两个部门的,所有记录。

同样,只要简单修改一下d2单元格的公式,就可以了,f列的原有的,公式不用管它:

=(A2=G$2)+(A2=G$3)+D1
看出门道了吗?多个条件符合其一,就是条件1+条件2
多个条件混合
现在再深入一步,要根据G1~G3单元格指定的条件,提取出财务部女性的记录以及安监部,的所有记录。

仍然只要简单修改一下d2,单元格的公式就可以了,f列的原有的,公式不用管它:

=(A2=G$1)*(C2=G$2)+(A2=G$3)+D1
看出门道了吗?要同时符合的多组条件就用乘法,对符合其一的条件就,用加法

好了,今天的分享就是这些吧,最后留给大家一个小问题:如果要提取财务部女性和销售部女性,的所有记录,d2单元格的公式,要如何修改呢?
图文制作:祝洪忠

精彩视频教程推荐:

一步破,我该做什么样的图表(限时免费)

老祝说VLOOKUP(限时免费)

ppt中十大无知误终身,的操作(限时免费)

事半功倍的报表模板搭建(限时免费)

玩转自定义函数(限时免费)

闲聊subtotal函数的前世,今生(限时免费)

一小时快速入门,VBA其实很简单(限时免费)

达人哥带你玩转word,自动编号(限时免费)

请点击【阅读原文】,直达excelhome云课堂观看,视频


    关注 Excel之家ExcelHome


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册