答案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(..
函数返回一个数组,TRUE
或FALSE
取决于在某一行中是否存在姓氏或名字。
=ISNUMBER(SEARCH(C3,Certified)) --> {FALSE;TRUE;FALSE;FALSE;FALSE}
=ISNUMBER(SEARCH(D3,Certified)) --> {TRUE;FALSE;FALSE;FALSE;FALSE}
当两个数组相乘时,它们会在同一个位置(同一行)以及任何其他组合中 返回1
一个。TRUE
0
在上面,他们将返回{0;0;0;0;0}
对于行Carl James
,我们看到
{FALSE;FALSE;TRUE;FALSE;FALSE}
{FALSE;FALSE;TRUE;FALSE;FALSE}
相乘后 -->{0;0;1;0;0}
因此,SUMPRODUCT
将返回第二个表中姓氏和名字与要测试的行相匹配的行数。如果某人在第一个表中输入了不止一次,也会返回该行数。
答案2
答案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))
。