我试图在Excel 2016中使用OR条件在单元格中搜索多个字符串。
例如我有一个字符串abcd1234
,我想找到ab OR 12
。
我使用的是德语版本,其中功能SEARCH
被称为SUCHEN
,它的行为应相同。
我发现this answer提出了解决方案:
SEARCH({"Gingrich","Obama","Romney"},C1)
。
我还发现this website表示相同的语法:
SEARCH({"red","blue","green"},B5)
与this website相同:
SEARCH({"mt","msa","county","unemployment","|nsa|"},[@Tags])
因此,他们基本上说要列出由大括号括起来的逗号分隔的搜索词,您就很好了。
但是将它们放到Excel 2016中只会导致通常无意义的Excel错误消息,该错误消息指出公式有错误,并且总是用花括号突出显示整个部分。
以第一个示例为例,我可以使Excel不抛出错误消息的唯一方法是更改语法,如下所示:
=SEARCH({"Gingrich";"Obama";"Romney"};C1)
但是用分号分隔搜索词并不能正确应用OR条件,因此这不是解决方案。
我从this answer获悉,我可以进行单独的搜索并将它们与条件一起串起来,但是我想避免这种情况,而且我还想知道为什么该语法应被用作多个来源确认对我不起作用。
编辑:
好吧,感谢索拉·迈克(Solar Mike):
代码=IF(COUNT(SEARCH({"Romney","Obama","Gingrich"},A1)),1,"")
确实可以正常工作。
=COUNT(SEARCH({"Romney","Obama","Gingrich"},A1))
也有效。
但是=SEARCH({"Romney","Obama","Gingrich"},A1)
没有。
=ISNUMBER(SEARCH({"Gingrich","Obama","Romney"},A1))
也不起作用。
我很想知道为什么。
答案 0 :(得分:2)
好的,这可以工作:
OR(IFERROR(FIND("ab",A1,1),0),IFERROR(FIND("12",A1,1),0))
我遵循了其中一个链接和这样的版本:
=IF(COUNT(SEARCH({"Romney","Obama","Gingrich"},C1)),1,"")
按我的预期工作,但是如果隔离搜索,它将失败,并且我没有找到解释...
答案 1 :(得分:1)
与其他数组样式公式一样,传递数组的部分必须封装在某种聚合函数中,以使其遍历数组-否则,它仅查看数组的第一个元素。因此,像COUNT,SUM,SUMPRODUCT之类的东西都可以解决问题。
我首选的是
=OR(ISNUMBER(SEARCH({"a","b","c"},A1)))
因为如果您想要AND逻辑,可以轻松地将其更改为此:
=AND(ISNUMBER(SEARCH({"a","b","c"},A1)))