2016-09-25 110 views
0

我在列中有文本單元格,並且我有一個單詞列表,我需要使用不含vba的公式使用該列表中的單詞列表中的文本單元格的第一個和第二個匹配項。在Excel中查找列表的第一個和第二個匹配項

here is an example of the result

+0

你的意思是第一和第二場比賽,因爲「蘋果」到來之前「橙色「,還是因爲」蘋果「出現在列表中的」橙色「之前? –

+0

訂單不重要,重點是從文本列表中找到一個單詞 – user3503064

回答

1

如果你的文字細胞A2開始,則:

First Match B2: =IFERROR(MID($A2,AGGREGATE(15,6,SEARCH(LIST,$A2),COLUMNS($A:A)),FIND(" ",$A2&" ",AGGREGATE(15,6,SEARCH(LIST,$A2),COLUMNS($A:A)))-AGGREGATE(15,6,SEARCH(LIST,$A2),COLUMNS($A:A))),"") 

,並填寫正確的電池,以獲得第二比賽。然後儘可能地填寫。

enter image description here

編輯:的OP已經添加具有做與字內不包括詞語,例如一個額外的要求沒有找到also如果單詞是Calso;也不會返回標點符號。

雖然繁瑣的公式,這可以通過 進行處理 - 用更換所有的標點space - 添加在開始和句子 的空間結束 - 添加在開始和每個單詞的空格結束LIST - 調整公式以不返回額外的空間。

以上操作可以通過修改定義名稱LIST以及使用定義的公式名稱進行標點替換以及空格前綴和後綴來完成。

給定上述示例,我們重新定義LIST

LIST refers to: =" " & Sheet1!$F$2:$F$6 & " " 

,並與在行2一些細胞選擇,我們定義theSentence

theSentence refers to: =" " & TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(Sheet1!$A10,","," "),"'"," "),"."," "),"!"," "))& " " 

即特定的定義將刪除逗號,上撇號,期間和感嘆號。如果您需要刪除其他標點符號,你可以嵌套多個SUBSTITUTE

而且我們做的公式在B2一些變化:

B2: =IFERROR(MID(theSentence,1+AGGREGATE(15,6,SEARCH(LIST,theSentence),COLUMNS($A:A)),FIND(" ",theSentence,1+AGGREGATE(15,6,SEARCH(LIST,theSentence),COLUMNS($A:A)))-AGGREGATE(15,6,SEARCH(LIST,theSentence),COLUMNS($A:A))-1),"") 
+0

非常好(假設我問OP的問題的第一個解釋,但沒有得到答案) –

+0

感謝您的回答,它是非常好,但有兩個問題,第一個,它會返回包含LIST單詞之一的任何單詞的結果。所以如果有一個像「Calso」這樣的詞,它會在第一個或第二個匹配單元格中返回,因爲它包含「也」,而且,如果有「apple和orange」,它將返回「apple」,並帶有逗號第一場比賽。這會導致很多問題和結果中的匹配錯誤。如果有辦法解決這些問題,我會很感激。 – user3503064

+0

@ user3503064這與您的原始數據不同。它可以通過使用嵌套的SUBSTITUTES去除標點符號,然後確保您的搜索條件在每個單詞前後包含「空格」。隨意修改公式。就個人而言,我會使用VBA和正則表達式來解決這種複雜性的問題。 –

1

這是問題的第二種解釋(找到的第一個並且在文本中任何地方的字符串列表中進行第二次匹配)。

=IFERROR(INDEX($F$2:$F$6,SMALL(IF(ISNUMBER(FIND(" "&$F$2:$F$6&" "," "&$A2&" ")),ROW($F$2:$F$6)-ROW($F$1)),COLUMNS($A1:A1))),"") 

注意,這是一個數組公式,必須以按CtrlShift鍵來輸入輸入

enter image description here

+0

在閱讀OP的評論之後,我已經放入了空格,儘管如果問題已經以更好的測試數據提交得更清楚,那麼它會更好。 –

相關問題