举个工作例子
左边是人事信息,有部门,员工信息,一个部门有多名员工。
现在需要根据姓名,把所有的员工信息给查找匹配出来,并且所有结果需要放在一个单元格里面,想要的效果,如右边所示:
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种方法,你更喜欢用哪种?动手试试吧!