2013-02-10 111 views
12

我使用這個方便的方程在excel中搜索單元格內部的術語。Excel:在單元格中搜索多個術語

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

這對金裏奇在C1存在式搜索,如果存在的話,它會顯示一個1

所有我想要做的是尋找在同一時間超過一個學期。任何人都知道如何添加一個或功能,所以我可以搜索金裏奇或奧巴馬或羅姆尼等......?

回答

22

另一個方式

=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()函數中根本不需要通配符。

+0

哇!我很喜歡用逗號輸入術語的簡單性。另外,從另一個地方輸入範圍可能會很方便。當你擁有excel時,誰需要搜索工具包! – 2013-02-11 14:51:39

+0

偉大的解決方案(即使它是在SO上)。希望我可以兩次投票贊成。我只是調整它來從表中提取值,而不是範圍。謝謝。 – dav 2015-08-31 14:30:50

+0

而不是使用'NOT(ISERR())',不會更簡單的'ISNUMBER()'足夠嗎? – Iakovosian 2016-06-22 18:53:32

2

這會爲你做它:

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

鑑於該列的名字(這是在C列)的右側該功能,結果是:

Romney 
Gingrich 1 
Obama  1 
+0

非常感謝,我看到只是添加另一個ISNUMBER和SEARCH工作得很好。 – 2013-02-11 14:52:23

+0

我編輯了我的答案以刪除通配符,這是@teylyn建議的不必要的。對於這種情況,'SEARCH()'中有多個項的答案是優越的,我已經提高了它們的效率,但是當單獨的測試不同時,需要將多個測試與'OR()'結合使用,所以我將這個例子留給了其他人可能會覺得它有用。 – Simon 2013-02-11 19:39:26

5

嘗試使用COUNT函數這樣

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

請注意,您不需要通配符(如teylyn說的),除非有特殊原因的「1」並不需要引號(事實上這使它成爲一個文本值)

相關問題