vlookup两个表格匹配 匹配2个条件的vlookup


让我们通过一个具体的工作实例来探讨。

在左侧,我们拥有员工的人事信息,包括部门和员工的具体信息。一个部门下可能有多名员工的信息记录。

现在,我们需要根据员工的姓名,将所有匹配的员工信息检索出来,并将所有结果整合到一个单元格中,以达到如右侧所示的效果。

由于这是一次一对多的查找匹配,我们需要借助辅助列来完成这一任务。

在右侧的空白列中,我们可以使用以下公式:

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

该公式的原理相对简单。当需要查找“市场部”时,它会在A3:D100的区域查找匹配的第四列数据(即D列),并与本行的B列信息进行拼接。这一过程会以错位递归的方式将每个部门的所有员工信息串联起来。

在G2单元格中,我们可以使用另一个公式:

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

这个公式通过VLOOKUP函数查找匹配的第一个结果,并使用MID函数去除最左边的逗号,从而得到我们想要的结果。

如果我们不希望使用辅助列来完成此任务,我们还可以选择使用IF函数与TEXTJOIN公式的组合。

我们可以使用IF函数从部门列中提取出与E2单元格匹配的部门所对应的员工信息,而其他则变为空白。

当输入以下公式时:

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

该公式将仅保留与E2单元格中“市场部”相匹配的员工信息。

接下来,我们可以使用TEXTJOIN公式将这些文本连接起来。其中第二个参数TRUE表示自动忽略空白值。

我们的组合用法如下:

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

在这个公式中,第一个参数是用于分隔文本的符号——逗号;第二个参数TRUE允许我们忽略任何空白值;第三个参数则是使用IF函数来决定哪些文本应当被包含进来。

另一个可行的公式是:

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

此公式会对B列中的数据进行筛选,筛选条件是A列中的值需与E2单元格中的值相匹配。这将筛选出所有“市场部”的员工信息。

但请注意,这种方式下筛选出的信息会分散在不同的单元格中。如果我们希望将所有信息整合到一个单元格内,可以使用以下公式:

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

这个公式能够将筛选出的文本用逗号连接起来,从而得到我们想要的结果。