1

我正在尝试清理一些可怕的数据。我有一个专栏,DESCRIPTION,其中包含各个部分的描述。维护这些数据的人似乎对他或她的疯狂没有任何方法,但那是另一次了。

我正在尝试查找数据的重复项并将它们标记为重复项。不幸的是,由于这东西的制作方式,它可能很艰难。例如,让我们以描述“轴承”为例。使用我当前的代码,我只能捕捉到“轴承”的单元格。如果他们说“BEARING”或“BEARING”(注意空格)或“BEARING”(再次是空格),那么它不会捕捉到它:

Sub test()
    Dim uniqueCounter As New Scripting.Dictionary
    Dim counter As Long
    Dim rowCount As Long
    Dim identifier As String


    rowCount = 10235

    uniqueCounter.CompareMode = TextCompare

    For counter = 1 To rowCount
        identifier = ActiveSheet.Cells(counter, 3) 'Put whatever number of combination of cells which the row unique here (maybe it's just the one)
        If uniqueCounter.Exists(identifier) Then
            uniqueCounter(identifier) = CLng(uniqueCounter(CStr(ActiveSheet.Cells(counter, 3)))) + 1
            ActiveSheet.Cells(counter, 1) = "Duplicate " & identifier
        Else
            uniqueCounter.Add identifier, "0"
            ActiveSheet.Cells(counter, 1) = "Original " & identifier
        End If
    Next counter

End Sub

有没有办法在代码运行时捕获字典条目的所有可能变体,类似于在 SQL 中使用 LIKE 的方式?

4

2 回答 2

2

听起来您想在 Excel 中进行正则表达式通配符匹配。您可以尝试查看内置的 Range.Find 并查看它是否可以满足您的需求。我找到了这个关于在 VBA 中匹配字符串的答案,然后我找到了这篇关于使用 .Find 的帖子。

于 2013-07-25T20:41:40.577 回答
1

看看您是否可以使用下面的示例进行构建。

Option Explicit
Option Compare Text

Sub test()
'the following code does a case-insensitive and wildcard comparison,returns true 
Debug.Print "bearing" Like "Bearing*"   
Debug.Print "bearing " Like "Bearing*"
Debug.Print "bearing, " Like "Bearing*"

End Sub
于 2013-07-25T20:05:47.590 回答