2014-06-10 118 views
0

我試圖從句子中提取單詞,如果它以下列字母之一開頭。戴爾**或三星**或Apple **。單詞的位置可能會有所不同。從單元格中提取值如果匹配字符列表

A1:Dell2622 Retail34792聯想StoreQuantity4
A2:Retail9858 Qty8 Samsung783546的Android
A3:Retail21512 Apple3411 StoreQty15的Macintosh

我想用下面的公式來提取戴爾**或**三星還是蘋果**如果它存在於單元格中。

=MID(A1, SEARCH({"Dell","Samsung","Apple"},A1), SEARCH(" ",A1, SEARCH({"Dell","Samsung","Apple"},A1))- SEARCH({"Dell","Samsung","Apple"},A1)) 

它適用於單元格A1,但其他所有內容都返回#VALUE !.我想它不承認我希望它檢查或者或者提取或者。我想達到的效果是:

A1:Dell2622
A2:Samsung783546
A3:Apple3411

後來我可能需要增加更多的東西來搜索,所以我想保持它容易修改。我猜想,因爲它發現第一個實例,那麼它只是調整一些事情,以確保如果它沒有找到第二個值的第一個值,等等。

+0

如果總是僅需要第二字符串,可以使用以下公式:'= TRIM(MID(SUBSTITUTE(TRIM(A1) ,「」,REPT(「」,255)),255,255))' – tigeravatar

+0

對不起,定位可能會隨着字符串的長度而變化。 – Deidan

回答

0

假設您有一個類似於圖片的數據設置下面,與A列中的字符串,在列B中的公式,和詞來尋找列d:

tigeravatar example

在單元格B2的公式和複製下來是:

=TRIM(LEFT(SUBSTITUTE(MID(A2,MIN(INDEX(SEARCH($D$2:$D$4,A2&$D$2:$D$4),)),255)," ",REPT(" ",255)),255)) 

並根據您的要求n OT使用範圍參考,而是具有直接在式詞語的列表:

=TRIM(LEFT(SUBSTITUTE(MID(A3,MIN(INDEX(SEARCH({"Dell","Samsung","Apple"},A3&{"Dell","Samsung","Apple"}),)),255)," ",REPT(" ",255)),255)) 
+0

這看起來不錯,但是有沒有方法可以在公式中的D列中指定單詞?另外,不知道爲什麼,將公式擴展到整個工作表不起作用,它只能用於前三個結果。即使我複製前三個單元格,我會得到一個#value !. – Deidan

+0

啊,那是因爲原來的公式需要數組輸入。我編輯過它,所以包括'INDEX'函數,以便它將自己視爲一個數組公式,而不用數組輸入。它現在應該適合你。至於「在公式中輸入值而不是使用單元格引用」,我編輯了包含這個的答案。請記住,如果您添加項目,則需要在兩個地方添加項目。 – tigeravatar

+0

這簡直太不可思議了。非常感謝。正是我想象的,但更好。 – Deidan

相關問題