我的问题是如何识别 A 列中包含 B 列中任意值的单元格。 具体来说:
我有一份包含 19,000 个名字和 10,000 个密码的列表。我正在尝试识别包含名字的密码。
例如,密码“mary”和“1mary!”都应该返回 True。
使用此公式,只有完全匹配才会被标记为 True:
=If(Iserror(Match("*"&B1&"*",A:A,0)),"False","True")
我发现自己想做以下事情,但没有成功:
=If(Iserror(Match(B1,"*"&A:A&"*",0)),"False","True")
[其中 B1 是密码,A:A 是姓名列表]。
答案1
您已经接近了。采取您尝试的方法,然后切换顺序或参数:
=IF(ISERROR(MATCH("*"&A:A&"*",B1,0)), "False", "True")
现在将其限制(绑定)到实际的名称列表,而不是整个A
列:
=IF(ISERROR(MATCH("*"&A$1:A$19000&"*",B1,0)), "False", "True")
并添加一个AND()
函数:
=IF(AND(ISERROR(MATCH("*"&A$1:A$19000&"*",B1,0))), "False", "True")
并在末尾输入Ctrl++ Shift,这样它就变成了Enter数组公式并用花括号显示:
{=IF(AND(ISERROR(MATCH("*"&A$1:A$19000&"*",B1,0))), "False", "True")}
并拖动/填充。
PS,除非你真的真的想要生成这些字符串(或者你确实想要生成其他字符串,例如“bad”和“good”),你可以简化为:
=NOT(AND(ISERROR(MATCH("*"&A$1:A$19000&"*",B1,0))))
(我在看到 Excellll 的答案之前写了这篇文章。)
答案2
您可以在数组公式中使用FIND
而不是。返回找到搜索词的字符编号,如果未找到则返回错误。使用以下内容。MATCH
FIND
=SUMPRODUCT(NOT(ISERROR(FIND($A$1:$A$19000,B1)))*1)>0
它的SUMPRODUCT
作用是使其像数组函数一样工作而不需要任何特殊的输入方法。
注意:您需要公式中名称的精确范围才能正确运行。如果这会造成问题,您可以改用以下方法:
=SUMPRODUCT(NOT(ISERROR(FIND(A:A,B1)))*1,NOT(ISBLANK(A:A))*1)>0