如何在 Excel 中逐行比较两列,然后提取唯一信息?

如何在 Excel 中逐行比较两列,然后提取唯一信息?

我的问题:

1)能够比较A 列B 列并通过对两列逐行进行比较来突出显示差异。

我正在处理一个包含 48k+ 行的大型数据集,我想比较 b 列是否包含 A 列中的任何单词。A 列可能仅构成 B 列中文本字符串的一部分,例如:A 列 = Achmina B 列 = 足球俱乐部 Achmina

以上将是 B 列与 A 列的匹配,但不是每行之间的匹配,A 列中文本的位置在 B 列中会有所不同。对于上述问题,我使用了以下代码:如何比较 Excel 中的两列以突出显示不匹配的单词?

VBA代码如下:

Sub highlightWords()
Application.ScreenUpdating = False
Dim rng2HL As Range, rngCheck As Range, dictWords As Object
Dim a() As Variant, b() As Variant, wordlist As Variant, wordStart As Long
Set r = Selection
'Change the addresses below to match your data.
Set rng2HL = Range("A1:A9")
Set rngCheck = Range("B1:B9")
a = rng2HL.Value
b = rngCheck.Value
Set dictWords = CreateObject("Scripting.Dictionary")
'Load unique words from second column into a dictionary for easy checking
For i = LBound(b, 1) To UBound(b, 1)
    wordlist = Split(b(i, 1), " ")
    For j = LBound(wordlist) To UBound(wordlist)
        If Not dictWords.Exists(wordlist(j)) Then
            dictWords.Add wordlist(j), wordlist(j)
        End If
    Next j
Next i
'Reset range to highlight to all black font.
rng2HL.Font.ColorIndex = 1
'Check words one by one against dictionary.
For i = LBound(a, 1) To UBound(a, 1)
    wordlist = Split(a(i, 1), " ")
    For j = LBound(wordlist) To UBound(wordlist)
        If Not dictWords.Exists(wordlist(j)) Then
            wordStart = InStr(a(i, 1), wordlist(j))
            'Change font color of word to red.
            rng2HL.Cells(i).Characters(wordStart, Len(wordlist(j))).Font.ColorIndex = 3
        End If
    Next j
Next i
Application.ScreenUpdating = True
End Sub

上述代码给了我部分图片,但进一步审查后发现它对我的目的来说并不是 100% 准确,因为它在 B 列中搜索所有 A 列中的单词,而我需要逐行搜索,因为 A 列和 B 列之间每行数据的关系是 1 比 1。

我努力了

VLOOKUP、精确匹配、索引匹配

但根本没有运气,而且我不是 VBA 或宏的超级用户,因此任何防傻瓜指导都会很有用!

我的第二个问题如下:

2)一旦我知道了列之间的区别A并且能够标记出差异,然后我想要提取真正唯一的记录,因为数据当前采用主键 ID 构造,但对于不同的来源重复:

主键 ID - 01200

数据源A:

客户姓名 - James Smith

数据源B:

客户姓名 - James Smi

数据源C:

客户姓名 - James Smith Steve

因此对于小学密钥 ID — 01200我需要根据客户姓名 - James Smith 提取唯一记录,但需要与其他数据源进行交叉验证。

我不确定如何使用 VBA 或宏来完成上述操作,但无论哪种方式,我都不太确定从哪里开始 - 因此也非常感谢您的帮助!

相关内容