我正在尝试清理一些可怕的数据。我有一个专栏,描述,包含各个部分的描述。保持这些数据的人似乎没有任何方法可以解决他或她的疯狂问题,但那是另一次。
我正在尝试查找重复的数据并将其标记为重复数据。不幸的是,由于这件事是如何制作的,它可能很难。例如,让我们来描述“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?
答案 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