代码之家  ›  专栏  ›  技术社区  ›  Khris

Excel 2016:在单元格中搜索多个术语

  •  1
  • Khris  · 技术社区  · 6 年前

    我正在尝试在Excel2016中搜索具有或条件的单元格中的多个字符串。

    例如,我有一根绳子 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])

    所以他们基本上说,用大括号括起来的逗号隔开一个搜索词列表,你很好。

    但是,将它们放入Excel2016只会导致一条通常意义不大的Excel错误消息,该消息表示公式有错误,并且总是用大括号突出显示整个部分。

    举第一个例子,我能让Excel不抛出错误消息的唯一方法是更改如下语法:

    =SEARCH({"Gingrich";"Obama";"Romney"};C1)

    但是用分号分隔搜索项并不能正确应用或条件,因此这不是解决方案。

    我知道从 this answer 我可以进行单独的搜索,并将它们与条件一起串在一起,但我想避免这样做,而且我还想知道为什么多个源确认的语法不适合我。

    编辑:

    好吧,我开始明白了,多亏了太阳能麦克:

    代码 =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)) 不工作。

    我想知道原因。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Solar Mike    6 年前

    好的,这样就可以:

    or(iferro(find(“ab”,a1,1),0),iferro(find(“12”,a1,1),0))
    

    在此测试:

    我跟踪了其中一个链接,版本如下:

    =if(count(search(“romney”,“obama”,“gingrich”,c1)),1,”“)
    

    我按预期工作,但如果搜索被隔离,它就会失败,我找不到解释…

    enter image description here

    我遵循了其中一个链接和如下版本:

    =IF(COUNT(SEARCH({"Romney","Obama","Gingrich"},C1)),1,"")
    

    按预期工作,但如果搜索被隔离,它就会失败,我找不到解释…

        2
  •  1
  •   Tom Sharpe    6 年前

    与其他数组样式的公式一样,传递数组的部分必须包含在某种聚合函数中,以使其扫描整个数组,否则它只查看数组的第一个元素。所以任何像count,sum,sumproduct这样的东西都可以做到。

    我最喜欢的是

    =OR(ISNUMBER(SEARCH({"a","b","c"},A1)))
    

    因为如果你想和逻辑上的话,你可以很容易地把它改成这个:

    =AND(ISNUMBER(SEARCH({"a","b","c"},A1)))