经常使用Excel处理数据的小伙伴们,都知道数据查询在Excel中运用的频率非常高,大家最熟悉的应该是vlookup函数,vlookup可以实现简单查询、逆向查询、数组查询等多种操作。但如果遇到一对多和多对多查询,vlookup就不太好用了,这时候我们需要使用Index函数。今天我们就来学习两组函数公式,来实现数据的一对多、多对多查询。

案例说明:如上图所示,我们拿到一个员工表格,我们需要做两个查询,第一个是查找出市场部所有员工的姓名;第二个是查询出人事部所有女性员工的姓名。这就需要用到一对多和多对多的查询了,可以使用Index函数来实现,下面具体看一下公式。
查询一:列出市场部所有员工的姓名(一对多查询)
整体流程解析:
1、在这里我们需要先对数据在F列中做一个辅助列,根据不同部门向下生成对应的数据序号。函数公式:=(C3=$H$3)+F2。(C3=$H$3)为逻辑判断,True代表数字1,False代表0,公式会自动生成符合的数字序号,市场部的3个人会对应的生成1、2、3等序号。如下图所示:

2、整理完辅助列我们就可以利用index、Match、iferror等函数公式来进行数据引用。通过1、2、3等数字序号来进行引用。如下图所示:

在部门下方输入公式,公式具体讲解:
=IFERROR(INDEX(C:C,MATCH(ROW(A1),$F:$F,0)),"")
2.1:ROW(A1):往下拖动的时候会自动生成1、2、3的数值;
2.2:MATCH(ROW(A1),$F:$F,0)
函数Match的作用在于通过Row函数返回的数值,查询对应的值在F列中的位置;
2.3:Index函数在这里就是通过Match定位到的数字来查询对应位置的值。最后利用Iferror函数来剔除错误值,因为超过四个的时候会查询不到会出现查询错误。
查询二:查询出人事部所有女性员工的姓名(多对多查询)
整体流程解析:
1、数据多对多查询时,跟一对多查询的差别主要在辅助列的公式不同,辅助列公式为:
=(C3=$H$3)*(E3=$J$3)+F2,也就是将两个条件用*号进行连接,生成对应的数字序号。1、2两种。如下图所示:

备注:条件判断公式用“*”连接,表示两个条件同时满足,如果用“+”连接,则表示两个条件满足一个即可。
2、做好辅助列后,多对多查询的公式与一对多是一样的。
具体公式:
=IFERROR(INDEX(C:C,MATCH(ROW(A1),$F:$F,0)),"")
结果如图所示:

函数解析:
多对多查询的时候,对应函数公式的意思与案例一中的一对多查询讲解一样。
通过上面的两组函数公式,我们就可以实现日常办公中一对多和多对多查询场景,相对来说,比使用vlookup实现要简单很多。大家可以收藏,以后实际运用起来。

关注轩哥,每天分享一个日常提高效率的办公小技巧。
相关文章