2017-01-30 42 views
1

我有兩列數據。第一個詞有一些詞,另一個詞包含單個詞。 what I have查找單元格中有多少單詞在數組中找到

我正在尋找一種方法來確定哪些單詞從第一列每個單元出現在第二,這樣的結果應該是這個樣子(我不需要逗號): what I need

我的問題與Excel find cells from range where search value is within the cell類似,但並不完全,因爲我需要確定哪些單詞出現在第二列,並且可能有多個單詞。

我也試過=INDEX($D$2:$D$7;MATCH(1=1;INDEX(ISNUMBER(SEARCH($D$2:$D$7;A2));0);)) 但它也只返回一個單詞。

回答

0

如果你願意使用VBA,那麼你可以定義一個用戶定義的功能:

Public Function SearchForWords(strTerm As String, rngWords As Range) As String 
    Dim cstrDelimiter As String: cstrDelimiter = Chr(1) ' A rarely used character 
    strTerm = cstrDelimiter & Replace(strTerm, " ", cstrDelimiter) & cstrDelimiter ' replace any other possible delimiter here 
    SearchForWords = vbNullString 
    Dim varWords As Variant: varWords = rngWords.Value 
    Dim i As Long: For i = LBound(varWords, 1) To UBound(varWords, 1) 
     Dim j As Long: For j = LBound(varWords, 2) To UBound(varWords, 2) 
      If InStr(1, strTerm, cstrDelimiter & varWords(i, j) & cstrDelimiter) <> 0 Then 
       SearchForWords = SearchForWords & varWords(i, j) & ", " 
      End If 
     Next j 
    Next i 
    Dim iLeft As Long: iLeft = Len(SearchForWords) - 2 
    If 0 < iLeft Then 
     SearchForWords = Left(SearchForWords, Len(SearchForWords) - 2) 
    End If 
End Function 

你也可以像這樣使用它從Excel表格:

=SearchForWords(A2;$D$2:$D$7) 
+0

這正是我需要的,它的偉大工程!非常感謝! – Paula

0

我有一個部分解決方案:(範圍都按您的圖片)

=IF(1-ISERROR(SEARCH(" "&D2:D7&" "," "&A2&" ")),D2:D7&", ","") 

此公式返回的包含在小區中的單詞的數組。這個數組很稀疏:它包含每個丟失單詞的空字符串。它假設單詞總是被一個空格隔開(如果需要,這可能會得到改進)。

但是,本機Excel函數不能連接數組,因此我認爲其餘部分僅適用於本機公式。

你需要VBA,但如果你使用VBA,你根本不應該打擾第一部分,因爲你可以做任何事情。

-1

您可以創建一個表格,其中包含要在頂部找到的單詞,並使用公式填充每個單詞下面的單元格(如果找到)。看截圖。

我注意到它在「黑板」中錯誤地拾取「板子」,但應該很容易修復。

=IFERROR(IF(FIND(C$1,$A2,1)>0,C$1 & ", "),"") 

只需concatinate結果

=CONCATENATE(C2,D2,E2,F2,G2,H2) 

=LEFT(CONCATENATE(C2,D2,E2,F2,G2,H2),LEN(CONCATENATE(C2,D2,E2,F2,G2,H2))-2) 

起飛的最後一個逗號和空格

Sceenshot

我已經編輯ŧ他與 「黑板」

爲C2

新公式解決問題
=IF(OR(C$1=$A2,ISNUMBER(SEARCH(" "&C$1&" ",$A2,1)),C$1 & " "=LEFT($A2,LEN(C$1)+1)," " & C$1=RIGHT($A2,LEN(C$1)+1)),C$1 & ", ","") 

新公式B2捕獲錯誤,如果沒有的話

=IFERROR(LEFT(CONCATENATE(C2,D2,E2,F2,G2,H2,I2),LEN(CONCATENATE(C2,D2,E2,F2,G2,H2,I2))-2),"") 

Screenshot 2