Excel:如何比较两个文本字符串并标记它们

Excel:如何比较两个文本字符串并标记它们

我有一个类似于下面的大文件。我希望能够将 A 列中的一组单词与 B 列中的一组单词进行比较,并在 C 列中得到“不匹配”、“完全匹配”或“部分匹配”。我是公式的初级用户,可以使用 VBA 保存和运行宏。

小提示,这些列确实有重复项,并且只需要逐个单元格进行比较(例如 A1 与 B1)。即使是更简单的形式也会有所帮助。谢谢。

A - 国际足联级别、皇家巴萨经典赛、阿拉伯键盘、克莱蒙费朗

B - 绿草足球、欧洲酒店、阿拉伯键盘、费朗

C - 不匹配、不匹配、完全匹配、部分匹配

  1. 我尝试过 VLOOKUP 和 SEARCH 的变体,但没有结果。
  2. 我已尝试将文本分列,然后使用 VLOOKUP 对两组文本进行操作,但它仍然会显示我无法使用的部分数据。
  3. 我能得到的最接近的答案是如何比较 Excel 中的两列以突出显示不匹配的单词? 当我对所有列运行宏时,它会忽略重复项并且不会比较 A1 与 B1,它似乎会检查 A:A 与 B:B,我仍然需要手动检查无匹配、完全匹配和部分匹配,这非常耗时。

当搜索部分匹配时,我想将整个单词与部分单词进行匹配 -

Cup vs Cupboard = Partial
Cupcake vx Cupboard = No Match

答案1

尝试一下这个小UDF()

Public Function comparee(s1 As String, s2 As String) As String
    comparee = "No Match"
    If s1 = s2 Then
        comparee = "Exact match"
        Exit Function
    End If

    arr1 = Split(s1, ", ")
    arr2 = Split(s2, ", ")
    For Each a1 In arr1
        For Each a2 In arr2
            If a1 = a2 Then
                comparee = "Partial"
                Exit Function
            End If
        Next a2
    Next a1
End Function

在此处输入图片描述

答案2

这是我在另一个论坛上找到的解决方案:

Function GetMatches(s1 As String, s2 As String)
    Dim spl1 As Variant, spl2 As Variant, i As Long

    If s1 = s2 Then GetMatches = "Exact Match": Exit Function

    spl1 = Split(Application.Trim(s1))
    spl2 = Split(Application.Trim(s2))

    For i = 0 To UBound(spl1)
           If Not IsError(Application.Match(spl1(i), spl2, 0)) Then GetMatches = GetMatches & " " & spl1(i)
    Next i
    If Len(GetMatches) = 0 Then
        GetMatches = "No Match"
    Else
        GetMatches = Application.Trim(GetMatches)
    End If
End Function

相关内容