这很容易用公式来完成,只要你不太关心可能不正确地找到单词的一部分。不过暂时忽略这个警告。首先,这是一个公式,它会告诉您是否在源字符串中的任何位置找到了多个字符串中的任何一个:
=OR(NOT(ISERROR(FIND(<array of strings to look for>,<string to look in>))))
这需要作为数组公式输入才能工作。您可以使用 Ctrl-Shift-Enter 输入它。要了解它的工作原理,请考虑 Excel 在评估真实示例时所做的工作:
=OR(NOT(ISERROR(FIND({"a","b","c"},"q b q"))))
'FIND' 查找一个字符串在另一个字符串中的位置。当使用第一个参数的数组调用时,它将返回一个位置数组(或 #VALUE!如果未找到搜索字符串)。您可以通过输入该公式然后在其中的表达式上使用 F9 键来跟踪评估:
=OR(NOT(ISERROR({#VALUE!,3,#VALUE!})))
=OR(NOT({TRUE,FALSE,TRUE}))
=OR({FALSE,TRUE,FALSE})
=TRUE
因此,对于您的示例,假设您要在 $B$6:$B$8 中搜索您的字符串,在 $D$2:$D$3 中搜索您的工作字符串,在 $E$2:$E$3 中搜索您的播放字符串。你可以把公式
=OR(NOT(ISERROR(FIND(D$2:D$3,$B6))))
在单元格 D6 中,将其作为数组公式输入,然后将其拖过区域 D6:E8 以查找 B 中的哪些字符串在其中起作用或播放单词。然后,您可以使用这些结果来驱动进一步的公式或条件格式。
但是,如上所述,您会注意到正在搜索的字符串中的任何子字符串都会被找到,所以
=OR(NOT(ISERROR(FIND({"a","b","c"},"bad"))))
将评估为 TRUE。(如果你的有趣列表包含“id”,“davids”中的“id”将匹配。)
与 Excel 的常见情况一样,如果您使用有限的数据集做一些您理解的事情,您可能不会关心这一点。但它可能会挫败将这种公式用作一般“应用程序”的一部分的尝试,该应用程序的用户不知道花哨的数组技巧或确切的“查找”做什么。(你可以通过在搜索词之后放置一个空格等来解决这个问题,但如果你把它交给其他人,那就是更神秘的巫术等待被打破。)不过,对于快速而肮脏的扫描,这很好.