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

时间:2013-02-10 23:36:47

标签: excel excel-2007 excel-formula excel-2010 excel-2013

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

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

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

我想做的就是一次搜索多个词。任何人都知道如何添加OR函数,以便我可以搜索Gingrich或奥巴马或罗姆尼等...?

4 个答案:

答案 0 :(得分:27)

另一种方式

=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()返回找到的字符串的位置。

答案 1 :(得分:8)

尝试使用像这样的COUNT函数

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

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

答案 2 :(得分:3)

这将为你做到:

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

在名称右侧的列中(在C列中)给出此函数,结果为:

Romney  
Gingrich    1
Obama       1

答案 3 :(得分:0)

除了@teylyn的答案外,我还要补充一点,您可以将多个搜索词的字符串放在单个单元格中(而不是对每个术语使用不同的单元格,然后将该范围用作SEARCH),使用命名范围和我从this link中发现的EVALUATE函数。

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

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

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

Named range definition

Refers to:字段中,输入以下内容:

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

上面的EVALUATE表达式很容易用于模拟文字字符串

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

用作SEARCH函数的输入:使用直接引用$G$1内的单个单元格SEARCH(在这种情况下使用花括号)是不可行的,因此使用命名范围和EVALUATE

现在的诀窍在于用$G$1扩展的命名范围EVALUATE代替对search_terms的直接引用。

The formula

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

It really works!

希望这会有所帮助。