Excel:使用数组公式搜索特定字符串中的字符串列表?

Joh*_*cés 15 excel search vba find excel-vba excel-formula

我想在单元格中搜索单词列表.我认为这将作为一个数组公式:

{=FIND(<list of words I want to search for>,<cell I want to search>)}
Run Code Online (Sandbox Code Playgroud)

但是当我正在搜索的单元格中的单词位于我正在搜索的单词列表的第一行时,它才会找到匹配项.有没有办法编写一个查看整个列表的公式?而且我更愿意,如果它不只是返回TRUE/FALSE.我知道如何在单元格中搜索单词列表,并根据单元格中是否存在单词中的单词返回TRUE/FALSE.我想知道找到了哪个单词或它的位置.

Exc*_*lll 28

如果找不到匹配,这将返回匹配的单词或错误.对于这个例子,我使用了以下内容.

要搜索的单词列表:要搜索的G1:G7
单元格:A1

=INDEX(G1:G7,MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*(ROW(G1:G7)-ROW(G1)+1)))
Run Code Online (Sandbox Code Playgroud)

Ctrl+ Shift+ 键输入数组公式Enter.

此公式的工作原理是首先查看单词列表以查找匹配项,然后将列表中单词的位置记录为正值(如果找到)或者如果未找到则将其记录为负值.此数组中的最大值是列表中找到的单词的位置.如果没有找到单词,则会将负值传递给INDEX()函数,从而引发错误.

要返回匹配单词的行号,您可以使用以下内容:

=MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*ROW(G1:G7))
Run Code Online (Sandbox Code Playgroud)

这也必须通过按Ctrl+ Shift+ 输入为数组公式Enter.-1如果找不到匹配项,它将返回.


Som*_*Guy 6

为像我这样的人添加这个答案,他们的 TRUE/FALSE 答案是完全可以接受的

OR(IF(ISNUMBER(SEARCH($G$1:$G$7,A1)),TRUE,FALSE))
Run Code Online (Sandbox Code Playgroud)

或区分大小写

OR(IF(ISNUMBER(FIND($G$1:$G$7,A1)),TRUE,FALSE))
Run Code Online (Sandbox Code Playgroud)

搜索词的范围在哪里 G1:G7

记得按CTRL+SHIFT+ENTER

  • 或者简单地`=OR(NOT(ISERROR(SEARCH({"Word 1","Word 2","Word 3"},MyRange))))`。 (5认同)