一对多查询问题在工作中经常能够遇到,举个例子,左边是一个员工信息表,要在右边根据部门名称,找出所有的员工名单。遇到查询问题,我们通常可以使用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函数一对多查找
所以使用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:查询结果转置
是不是就方便多了?
领取专属 10元无门槛券
私享最新 技术干货