2016-11-17 70 views
2

我有一個短語列表。我想檢查是否有任何新詞彙與詞彙部分匹配。匹配單元格內的任何單詞與單元格範圍內的任何單詞

我正在尋找一個代碼來實現列表上的模糊匹配以返回具有緊密匹配的單元格。

實施例的數據:

enter image description here

Phrases,Terms 
real term,new words 
great work,new term 
check phrase,more phrase 
example here,great alpha 
phrase random,beta new 

所需的輸出:

enter image description here

Phrases,Term,Match 
real term,new words,No match 
great work,new term,real term 
check phrase,more phrase,check phrase/phrase random 
example here,great alpha,great work 
phrase random,beta new,No match 

我有什麼:

我嘗試使用下面的代碼到細胞匹配,一旦發現:

=IF(ISERROR(MATCH("*" & B2 & "*",A:A, 0)), "No Match", VLOOKUP("*" & B2 & "*",A:A,1,FALSE)) 

但是,代碼只有整個單元格相匹配。我怎樣才能讓它匹配單元格中的任何單詞?這將創建一個模糊匹配。任何積極的投入是高度讚賞。

+0

您是否嘗試過任何VBA代碼? – CallumDA

+0

嘿@ CallumDA33,還沒有。我用excel代碼不太好。熟悉linux和bash。會很高興嘗試/學習你們建議的任何事情:-)謝謝你看看。 – DomainsFeatured

回答

2

這裏是一個(粗糙和準備好)的VBA解決方案,以您的問題。您將需要將其插入VBA編輯器中的代碼模塊,然後您可以運行宏以獲得所需的輸出

Sub FindSimilar() 
    Dim phrases As Range, phrase As Range 
    Dim terms As Range, term As Range 
    Dim matches As String 
    Dim words() As String 

    'ensure this has the correct sheet names for your workbook 
    Set phrases = ThisWorkbook.Worksheets("Sheet2").Range("A2:A6") 
    Set terms = ThisWorkbook.Worksheets("Sheet1").Range("D2:D6") 

    For Each term In terms 
     matches = vbNullString 
     words() = Split(term.Value) 

     For i = 0 To UBound(words, 1) 
      For Each phrase In phrases 
       If InStr(1, phrase.Value, words(i)) Then 
        matches = matches & phrase & "/" 
       End If 
      Next phrase 
     Next i 

     If matches <> vbNullString Then 
      term.Offset(0, 5).Value = Left(matches, Len(matches) - 1) 
     Else 
      term.Offset(0, 5).Value = "No match" 
     End If 
    Next term 
End Sub 
+0

嘿@ CallumDA33,這個工程很適合我的例子。我只是對我們的一些數據進行測試。 2個問題。如何爲短語範圍引用不同的工作表(Sheet2,相同的工作簿)?而且,我在哪裏更改匹配輸出的列?我將有效地在列D中的匹配項和列I中的匹配項(大寫字母i) – DomainsFeatured

+1

我已更新以下代碼:1.查看用於短語和術語引用的「set」命令 - 確保它們是指向你的數據。我現在已經根據你的要求改變了它們。 2.在底部看到'term.Offset()'行,它們將列D(來自'terms'的定義)偏移5列 - 也就是根據請求列'I'。儘量確保自己明白自己在做什麼,以便在需要時自己做出小改動 – CallumDA

+0

太棒了!現在嘗試一下。是的,我很新。我確實嘗試瞭解它的語法。你的方向非常有幫助。非常感謝:-) – DomainsFeatured

相關問題