ef 单表一对多集合查询_让你效率高得飞起的EXCEL高级查询(二):一对多查询...

上次小白通介绍了如果在EXCEL中实现批量查询,如果想查询的项目在不同行多次出现,该如何实现批量查询呢?

155c61e01accb70baa865d6dba537075.png

问题:如何查取出市场部所有员工的工号、姓名和职务信息?

04ba26791840b850e30b9cc3107b6ccc.png

这个任务略复杂一些,无论是VLOOKUP还是MATCH都只能实现单个目标查询,这时又要利用辅助列来帮忙了。

辅助列

在最左侧插入一个空行,输入公式:

=COUNTIF(C$2:C2,$J2),

得到市场部在原表的部门列中(C$2:C2)出现的次数(即市场部从第一行到本行出现了几次)。

bd4659b219dde3ca4f9197703edc94ad.gif

可以看到,从第一行开始,市场部每在部门列出现一次,辅助列数字就会增加1,这样我们就为每一个市场部所在行做了一个独特的标记。

查取信息

我们以INDEX和MATCH函数组合为例来实现这一功能。函数参数不再为大家详细介绍,直接上公式:

=INDEX(B:B,MATCH(ROW($A1),$A:$A,0)),

9811b46de395ddc01402e31107928b27.gif

这里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小白通 原创,欢迎关注,带你一起长知识!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值