如何快速进行多对多查询?

今天,有小伙伴问成都office培训机构小编如何能够快速实现多对多查询。今天,小编就给大家分享一下这个案例吧:

如上图所示,需要根据所给出的部门和性别,在左侧表格内才哈讯对应的员工性别。

此案例要完成计算,我们只需要使用一个辅助列数据和一个查询函数即可。不会的小伙伴且跟着小编一步步往下操作吧:

1.制作辅助数据

在D2单元格内输入公式:=(B2=F$1)*(C2=F$2)+D1后往下填充

公式说明:

(B2=F$1)部分,用B列的部门与F1单元格指定的部门进行对比,如果相同,返回逻辑值TRUE,否则返回逻辑值FALSE。

(C2=F$2)部分 ,用C列的性别与F2单元格指定的性别进行对比,如果相同,返回逻辑值TRUE,否则返回逻辑值FALSE。

而(B2=F$1)*(C2=F$2)部分将两个条件相乘,则表示需要两部分条件同时满足,即B列部门与F1单元格指定的部门相同,且C列性别与F2单元格指定的性别相同时,返回逻辑值TRUE,否则返回逻辑值FALSE。

然后将返回的逻辑值与前一个单元格中的数值相加。(因此,D1单元格内不能存放除0之外的数据)

在四则运算中,TRUE的作用相当于1,FALSE的作用相当于0。也就是如果部门和性别两个条件都符合了,D列的数值就增加1,否则还等于前一个数值。

注意观察,1、2、3、4……这些序号首次出现的行,就是符合条件的记录。

2.查询数据

在F4单元格内输入公式:=IFERROR(INDEX(A:A,MATCH(ROW(A1),D:D,0)),””)后往下拖动 即可

公式说明:

MATCH(ROW(A1),D:D,0)部分,ROW(A1)部分返回A1单元格的行号,往下拖动时,会依次返回A2、A3……的行号,1、2、3……,然后再使用MATCH函数在D列中分别去定位ROW函数所得到的数字所在的行数(如有重复,则返回此数字第一次出现的行数)

然后,再使用INDEX函数去A列中查询MATCH函数所定位得到行数相对应的姓名

最后,在最外层套用IFERROR函数对INDEX查询得到的结果进行检查,如INDEX函数所得到的结果为错误值,则返回””(空)

到此,本案例与大家分享的多对多查询就完成了。当然,本案例中,使用的查询函数为INDEX和MATCH函数的结合。如果想使用VLOOKUP函数进行查询,可将辅助列数据放到姓名列前面即可。

今天的分享到此就结束了,希望对你有所帮助!