22

我使用这个方便的公式在 Excel 中的单元格内搜索一个术语。

=IF(ISNUMBER(SEARCH("*Gingrich*",C1)),"1","")

此等式搜索 C1 中是否存在 Gingrich,如果存在,则显示 1。

我想做的就是一次搜索多个词。任何人都知道如何在其中添加 OR 函数,以便我可以搜索 Gingrich OR Obama OR Romney 等...?

4

4 回答 4

40

其他方式

=IF(SUMPRODUCT(--(NOT(ISERR(SEARCH({"Gingrich","Obama","Romney"},C1)))))>0,"1","")

此外,如果您在 A1 到 A3 中保留一个值列表,那么您可以使用

=IF(SUMPRODUCT(--(NOT(ISERR(SEARCH($A$1:$A$3,C1)))))>0,"1","")

Search() 函数中根本不需要通配符,因为 Search() 返回找到的字符串的位置。

于 2013-02-11T00:45:51.750 回答
16

尝试使用这样的 COUNT 函数

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

请注意,您不需要通配符(如 teylyn 所说),除非有特定原因,“1”不需要引号(实际上这使它成为文本值)

于 2013-02-11T09:03:02.503 回答
7

这将为您完成:

=IF(OR(ISNUMBER(SEARCH("Gingrich",C3)),ISNUMBER(SEARCH("Obama",C3))),"1","")

给定名称右侧列中的此函数(位于 C 列中),结果为:

Romney  
Gingrich    1
Obama       1
于 2013-02-11T00:41:27.403 回答
0

除了@teylyn的答案,我想补充一点,您可以将多个搜索词的字符串放在一个单元格中(而不是为每个词使用不同的单元格,然后使用该范围作为参数SEARCH),使用命名范围和EVALUATE我从这个链接中找到的函数。

例如,我将以下术语作为文本放入单元格中$G$1

"PRB", "utilization", "alignment", "spectrum"

然后,我为该单元格定义了一个命名范围search_terms,如上面链接中所述,如下图所示:

命名范围定义

在该Refers to:字段中,我输入了以下内容:

=EVALUATE("{" & TDoc_List!$G$1 & "}")

上面的EVALUATE表达式很简单,用于模拟文字字符串

{"PRB", "utilization", "alignment", "spectrum"}

用作SEARCH函数的输入:在内部使用对 SINGLE 单元格的直接引用$G$1(在这种情况下用大括号增加)SEARCH不起作用,因此使用命名范围和EVALUATE.

现在的诀窍在于用 -augmented 命名 range 替换对的$G$1直接EVALUATE引用search_terms

公式

它确实有效,并再次展示了 Excel 的强大功能!

真的行!

希望这可以帮助。

于 2019-12-20T08:04:51.963 回答