所以上周我一直在学习VBA,我编写了一个数据库清理工具。但是,我正在尝试实现一个清除,删除任何重复字符的迹象。特别是xxx,TTTTT,6666等。然而,在线搜索和做一些研究我找不到解决方案。
我认为正则表达式看起来像这样: “^ [(\ W)+] $”
但是,这只会找到任何单词字符并替换它们,所以我需要设置搜索来查找任何一个字符,一遍又一遍地重复。
我看到有人有“^(。)\ 1 + $”,它似乎可以做到这一点,但它切断了我不想搜索的数据的末尾。
我很震惊,这方面没有任何主题,我认为正则表达式是找到它而不是做硬代码的最简单方法,例如。循环遍历单元格值并检查每个字符。
谢谢它整天都在震撼我的大脑。
答案 0 :(得分:1)
你可以尝试这样的事情。我将你的正则表达式更改为(.)\1+
,因此它可以删除所有重复的字符。不要忘记使用工具添加Regexp>参考> Microsoft VBScript正则表达式5.5。
Public Function cleanRange(cells As range) Dim pattern As String: pattern = "(.)\1+" Dim subst As String: subst = "$1" Dim regex As New RegExp Dim cell As range For Each cell In cells With regex .Global = True .pattern = pattern If .Test(cell.Value) Then cell.Value = .Replace(cell.Value, subst) End If End With Next cell End Function
答案 1 :(得分:0)
我这样编码就像我需要它一样。
For pp = 1 To Len(Sheets(1).Cells(x, "I").Value)
char1 = Mid(Sheets(1).Cells(x, "I").Value, pp, 1)
If pp < Len(Sheets(1).Cells(x, "I").Value) Then
char2 = Mid(Sheets(1).Cells(x, "I").Value, pp + 1, 1)
If char1 <> char2 Then
Exit For
End If
Else
Rows(x).EntireRow.Delete
delFlag = 1
Exit For
End If
Next