
一对多查询问题在工作中经常能够遇到,举个例子,左边是一个员工信息表,要在右边根据部门名称,找出所有的员工名单。遇到查询问题,我们通常可以使用VLOOKUP函数来解决,但在这个问题中,Filter函数将会更加高效!

图1:一对多查询问题示例
VLOOKUP函数如何解决?
我们知道,VLOOKUP函数可以根据左边第一列的数据,找出右边对应的内容,但是,这里部门不唯一,所以,需要先构造一个辅助列,使用COUNTIF函数可以实现:
=B2&COUNTIF($B1:B2,B2)

图2:构造辅助列
在这个公式中,COUNTIF会对相同部门出现的次数进行计数,市场部出现第一次,就计为1,出现2次,则计为2,以此类推,然后用&连接符,把部门名称和计数连接起来,就得到了市场部1、市场部2……我们就得到了一个唯一的辅助列。
接着,我们使用VlOOKUP函数来查找,查找值就是市场部1、市场部2…所以,我们希望可以有一个公式,往右拖动的时候,自动变成1、2、3、4……,COLUMN函数刚好可以实现。
=COLUMN(A:A)

图3:COLUMN函数构造序列
我们把这个数字,和部门结合起来查询,就可以查到这个部门下的所有员工了,查找公式如下:
=VLOOKUP($F2&COLUMN(A:A),$A:$D,4,0)

图4:VLOOKUP函数一对多查找
WPS表格的这几个功能,真香
如果同时隐藏了多个工作表,只要右键单击工作表标签,选择【取消隐藏】,然后在对话框中单击一下 ,按Ctrl A,再点击【确定】按钮,就可以同时取消
所以使用VLOOKUP函数,查找起来还是有点绕的,如果你使用的Excel版本是2021版,那么可以使用Filter函数来解决这个问题。
FIlter函数如何解决?
Filter函数的语法很简单,只有3个参数:
=FILTER(要返回内容的数据区域,指定的条件,[没有记录时返回的内容])
在这个问题中,我们输入公式,就可以直接查出来:
=FILTER(D:D,B:B=F2)

图5:Filter函数查找
但这个查出来的是竖版,我们通过转置公式TRANSPOSE,把结果变成竖版,然后往下填充即可。
=TRANSPOSE(FILTER(D:D,B:B=F2))

图6:查询结果转置
是不是就方便多了?
要获取本文的示例文件,关注Excel精选技巧后,私信发送【20230314】即可获取。
如果有任何疑问,可以在评论区留言哦!
Excel工作表中最常用的10个经典技巧都不掌握,那就真的Out了
生活离不开技巧,工作也是一样,如果你经常和Excel系统打交道,那么,以下技巧是必须要掌握的。在【类型】中输入:中国@ 并【确定】。