Excel一对多匹配,Vlookup太弱了,2种新方法

志课程 2024-10-07 15:38:38

举个工作例子

左边是人事信息,有部门,员工信息,一个部门有多名员工。

现在需要根据姓名,把所有的员工信息给查找匹配出来,并且所有结果需要放在一个单元格里面,想要的效果,如右边所示:

1、Vlookup方法

因为涉及到一对多查找匹配,我们需要借助辅助列来完成

我们在右边空白列,输入的公式是:

=IFERROR(VLOOKUP(A2,A3:D100,4,0),"")&","&B2

它的工作原理很简单

比如,查找A2的市场部的时候,它会查找匹配A3:D100区域,也就是下面数据对应的第4行数据,对应D行,然后再和本身的B2连接起来

通过错位递归的方式,把所有属于自己部门的信息给串起来了

然后我们在G2单元格只需要输入的公式是:

=MID(VLOOKUP(F2,A:D,4,0),2,100)

使用VLOOKUP函数公式,查找匹配第一个出现的结果,然后再使用MID函数,去除掉最左边的逗号,就可以得到我们想要的结果了

2、TEXTJOIN+IF公式法

如果我们不想使用辅助列来完成,那我们可以使用IF函数搭配TEXTJOIN公式

首先,我们使用IF函数,把对应部门的信息给提取出来,其余的就变成空白

当我们输入公式:

=IF(A:A=E2,B:B,"")

它就只会保留市场部对应的员工信息

然后我们再使用TEXTJOIN公式,将这些文本连接起来,使用第2参数TRUE,自动忽略空白值

所以我们组合用法是:

=TEXTJOIN(",",TRUE,IF(A:A=E2,B:B,""))

第一参数是用什么来分隔,这里使用逗号

第二参数TRUE,忽略了空白值

第三参数,就是连接哪些文本,使用IF函数嵌套

3、ARRAYTOTEXT+FILTER

当我们输入公式:

=FILTER(B:B,A:A=E2)

它表示,对B列的数据进行筛选,筛选的条件是A列里面,对应E2的值

它就会把市场部所有的员工信息给筛选出来了

但是它会位于不同的单元格内

这个时候,如果我们想把它放在一个单元格里面,就可以使用公式:

=ARRAYTOTEXT(FILTER(B:B,A:A=E2))

它就可以将文本用逗号连接起来,得到我们想要的结果

上面3种方法,你更喜欢用哪种?动手试试吧!

1 阅读:190