如何将两个单元格的文本匹配到一个单元格?

如何将两个单元格的文本匹配到一个单元格?

我将以不同方式列出员工姓名的多个数据源(“姓,名”、“名姓”、“姓名”等)合并到一个工作簿中,从而合并到一个表中。我想避免花费大量时间来操作导入的数据。

我想使用一个公式来告诉我某人的姓名是否在行 (A) 中,无论姓名如何显示。下面是我使用的公式,但它不能保证名字和姓氏在同一个单元格/行中匹配。(黄色突出显示表示示例不正确。)

有人有什么建议或想法吗?

公式:

=IFERROR(IF(MATCH("*"&C3&"*",$A$2:$A$6,0)>=0,IF(MATCH("*"&D3&"*",$A$2:$A$6,0)>=0,1,0)),0)

在此处输入图片描述

答案1

=SUMPRODUCT(ISNUMBER(SEARCH(C3,Certified))*ISNUMBER(SEARCH(D3,Certified)))

Certified您的列表在 A 列的什么位置?

如果区分大小写有帮助(意味着更少的误报而不增加假阴性),正如@Scott 在下面的评论中指出的某些例子一样,在公式中FIND替换。SEARCH

=SUMPRODUCT(ISNUMBER(FIND(C3,Certified))*ISNUMBER(FIND(D3,Certified)))

如果您需要确保整个单词匹配,我建议使用 VBA 解决方案。

在此处输入图片描述

ISNUMBER(..函数返回一个数组,TRUEFALSE取决于在某一行中是否存在姓氏或名字。

=ISNUMBER(SEARCH(C3,Certified)) --> {FALSE;TRUE;FALSE;FALSE;FALSE}
=ISNUMBER(SEARCH(D3,Certified)) --> {TRUE;FALSE;FALSE;FALSE;FALSE}

当两个数组相乘时,它们会在同一个位置(同一行)以及任何其他组合中 返回1一个。TRUE0

在上面,他们将返回{0;0;0;0;0}

对于行Carl James,我们看到

{FALSE;FALSE;TRUE;FALSE;FALSE}
{FALSE;FALSE;TRUE;FALSE;FALSE}

相乘后 -->{0;0;1;0;0}

因此,SUMPRODUCT将返回第二个表中姓氏和名字与要测试的行相匹配的行数。如果某人在第一个表中输入了不止一次,也会返回该行数。

答案2

同时搜索两个名字。您需要进行两次搜索,一次搜索时将名字放在前面,另一次搜索时将姓氏放在前面:

=IF(OR(ISNUMBER(MATCH("*" & C3 & "*" & D3 & "*",A:A,0)),ISNUMBER(MATCH("*" & D3 & "*" & C3 & "*",A:A,0))),1,0)

当找到匹配项时,返回ISNUMBERTRUE。如果没有找到匹配项,MATCH 将返回错误(非数字)。

在此处输入图片描述

答案3

构建于Scott Craner 的回答, 我建议

=IF(OR(ISNUMBER(MATCH(C3 & " " & D3,A:A,0)), ISNUMBER(MATCH(D3 & " " & C3,A:A,0)),
                ISNUMBER(MATCH(D3 & ", " & C3,A:A,0))),1,0)

(在一行中输入所有内容。)这将查找问题中显示的三种可能的呈现方式之一:

  • “名字 姓氏” ( C3 & " " & D3)
  • “姓氏 名字” ( D3 & " " & C3)
  • “姓氏,名字” ( D3 & ", " & C3)

而不会因使用通配符 ( ) 而产生大量误报风险*。当然,如果以其他方式输入姓名,则会产生误报风险。

答案4

移动摘要单元格,然后使用文本到列将其用逗号和空格拆分,将它们视为单独的分隔符。添加一列以重新连接=IF(C2="",CONCATENATE(A2," ",B2),CONCATENATE(C2," ",A2))

图像

相关内容