在Excel VBA中使用LIKE查找单元格的副本?

时间:2013-07-25 19:56:48

标签: excel vba excel-vba

我正在尝试清理一些可怕的数据。我有一个专栏,描述,包含各个部分的描述。保持这些数据的人似乎没有任何方法可以解决他或她的疯狂问题,但那是另一次。

我正在尝试查找重复的数据并将其标记为重复数据。不幸的是,由于这件事是如何制作的,它可能很难。例如,让我们来描述“BEARING”。使用我当前的代码,我只能捕获说“BEARING”的单元格。如果他们说“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?

2 个答案:

答案 0 :(得分:2)

听起来你想要在Excel中进行正则表达式通配符匹配。您可以尝试查看内置的Range.Find,看看是否可以实现您的需求。我找到了this关于在VBA中匹配字符串的答案,然后让我发表关于使用.Find的this帖子。

答案 1 :(得分: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