上次小白通介绍了如果在EXCEL中实现批量查询,如果想查询的项目在不同行多次出现,该如何实现批量查询呢?
问题:如何查取出市场部所有员工的工号、姓名和职务信息?
这个任务略复杂一些,无论是VLOOKUP还是MATCH都只能实现单个目标查询,这时又要利用辅助列来帮忙了。
辅助列
在最左侧插入一个空行,输入公式:
=COUNTIF(C$2:C2,$J2),
得到市场部在原表的部门列中(C$2:C2)出现的次数(即市场部从第一行到本行出现了几次)。
可以看到,从第一行开始,市场部每在部门列出现一次,辅助列数字就会增加1,这样我们就为每一个市场部所在行做了一个独特的标记。
查取信息
我们以INDEX和MATCH函数组合为例来实现这一功能。函数参数不再为大家详细介绍,直接上公式:
=INDEX(B:B,MATCH(ROW($A1),$A:$A,0)),
这里ROW函数的值没有实际意义,但提供一个从1开始的数列给MATCH函数。
MATCH函数的作用是查询辅助列中的标记(也就是第一次出现的1、2等数字)出现在第几行。在前面我们已经建立了市场部所在行与辅助列数字的联系,这样,MATCH把市场部的行号提供给了INDEX,再由INDEX输出员工的工号。当我们想要查询员工的姓名等信息时,只需要调整INDEX函数的第一个参数,或直接向右、向下填充,就可以得到市场部的所有员工信息。
利用VLOOKUP函数也可实现查取功能,小伙伴可自行研究。
进一步优化
优化公式:
=IFERROR(INDEX(B:B,MATCH(ROW($A1),$A:$A,0)),””)
当ROW($A1)大于部门员工数量时,INDEX函数会报错。IFERROR函数可以过滤这种原因引起的错误值,这样我们就完整实现了查询市场部所有员工信息的功能。
一对多查询属于EXCEL中较为复杂的查询功能,想熟练掌握还需多练习哦。
往期精彩
如何实现EXCEL单元格内文字快速分列
怎样用EXCEL抠图和更换图片背景?
本文由 EXCEL小白通 原创,欢迎关注,带你一起长知识!