如何在 Excel 中識別兩列文字中的重複項

如何在 Excel 中識別兩列文字中的重複項

我有一個工作表,其中 A 列具有不同格式的各種名稱:
A1 John Smith
A2 Jones、Mary
A3 Sally Gomez
A4 The Gonzalez family

B 列具有類似數據:
B1 The Smith Family Trust
B2 Bob 和 Mary Jones
B3 Blackwell、 John
B4 Luz Gonzalez

我想識別在 A 列和 B 列中找到相同姓氏的實例

。了「Smith」) A1 和 B1)
C2 TRUE(因為「Jones」在 A2 和 B2 中都出現)
C3 FALSE(因為 A3 和 B3 之間沒有共同詞)
C4 TRUE(因為「Gonzalez」在A4 和B4 中均出現

)甚至可能嗎?

答案1

鑑於您的評論和問題,如果一個短語中的任何單字與相鄰短語中的單字匹配,您似乎希望返回 TRUE。實現此目的的一種方法是使用使用者定義函數 (VBA)。以下內容排除了 中的任何單字arrExclude,您可以根據需要添加這些單字。它還會排除任何非字母、數字或空格的字符,以及僅由單個字符組成的任何單字。

看看這是否適合你。

另一個選擇是查看 MS 為 2007 及更高版本的 excel 版本提供的免費模糊查找插件。

若要輸入此使用者定義函數 (UDF),alt-F11請開啟 Visual Basic 編輯器。確保您的專案在「專案資源管理器」視窗中突出顯示。然後,從頂部選單中選擇Insert/Module下面的程式碼並將其貼到打開的視窗中。

若要使用此使用者定義函數 (UDF),請輸入下列公式

=WordMatch(A1,B1)

在某個單元格中。

編輯2: Find Matches更改了部分,看看它在 Mac 上是否運行得更好


Option Explicit
Option Base 0
Option Compare Text
Function WordMatch(S1 As String, S2 As String) As Boolean
    Dim arrExclude() As Variant
    Dim V1 As Variant, V2 As Variant
    Dim I As Long, J As Long, S As String
    Dim RE As Object
    Dim sF As String, sS As String

'Will also exclude single letter words
arrExclude = Array("The", "And", "Trust", "Family", "II", "III", "Jr", "Sr", "Mr", "Mrs", "Ms")

'Remove all except letters, digits, and spaces
'remove extra spaces
'Consider whether to retain hyphens

Set RE = CreateObject("vbscript.regexp")
With RE
    .Pattern = "[^A-Z0-9 ]+|\b\S\b|\b(?:" & Join(arrExclude, "|") & ")\b"
    .Global = True
    .ignorecase = True
End With

With WorksheetFunction
    V1 = Split(.Trim(RE.Replace(S1, "")))
    V2 = Split(.Trim(RE.Replace(S2, "")))
End With

'Find Matches
If UBound(V1) <= UBound(V2) Then
    sS = " " & Join(V2) & " "
    For I = 0 To UBound(V1)
        sF = " " & V1(I) & " "
        If InStr(sS, sF) > 0 Then
            WordMatch = True
            Exit Function
        End If
    Next I
Else
    sS = " " & Join(V1) & " "
    For I = 0 To UBound(V2)
        sF = " " & V2(I) & " "
        If InStr(sS, sF) > 0 Then
            WordMatch = True
            Exit Function
        End If
    Next I
End If

WordMatch = False

End Function

編輯:這是結果的螢幕截圖,使用​​了您的原始範例以及您在下面的評論中給出的範例,其中您指出您遇到了問題。

在此輸入影像描述

答案2

本練習最困難的部分是確定 A 列中姓氏的組成。在您的示例中,它是:

  1. 第一個單詞,如果全名中有逗號
  2. 第二個字

如果該規則成立,那麼您可以執行以下公式:

=NOT(ISERROR(FIND(last_name, B1:B4)))

實際確定姓氏的公式稍微複雜一些。您本質上必須弄清楚空格所在的字元位置,然後將字母拉到中間。這個線程有一個很好的解釋:

http://www.mrexcel.com/forum/excel-questions/17559-return-first-second-word-text-string-find-subsitute.html

答案3

在儲存格 C1 中使用此公式關聯

=IF(VLOOKUP(B1:B4,A:A,1)=B1,"",B1)

答案4

反白顯示兩列 > 條件格式(主頁標籤)> 反白顯示儲存格規則 > 重複值。這將突出顯示兩列中的所有重複項。
確保突出顯示列而不是單元格。

相關內容