检查给定单元格中是否出现多个string的更好方法

在过去,我使用了=IF(OR(ISNUMBER(SEARCH("*orange*",A1),ISNUMBER(SEARCH("*apple*",A1)),1,0))来检查在这种情况下,如果我想检查是否有更多的string出现,我需要继续添加更多的ISNUMBER(SEARCH())行,对于大量的string,这是不可行的。更好的方法来做到这一点,而不使用VBA,我可能会失踪?

你可以使用这个公式(注意,你不需要在SEARCH使用星号通配符):

 =SUMPRODUCT(--ISNUMBER(SEARCH({"orange","apple"},A1)))>0 

如果这两个单词中的任何一个都在A1中,这将会使你成为TRUE 。 如果您想要自定义结果消息,或者使用MIN获取1和0,则可以将其封装在IF

 =MIN(SUMPRODUCT(--ISNUMBER(SEARCH({"orange","apple"},A1))),1) 

公式的工作原理是这样的:

SEARCH({"orange","apple"},A1)在A1中查找单词,如果find则返回值数组,否则返回错误。

ISNUMBER检查数组中的每个结果。

这两个--在前面将TRUE和FALSE分别转换为1和0。

SUMPRODUCT将1和0相加。如果至less为1,则会得到0以上的最终结果。