VBAsearch使用正则expression式重复单个字符
所以上周我一直在学习VBA,并且编写了一个数据库清理工具。 但是我试图实现一个干净的,删除重复字符的任何迹象。 特别是XXX,TTTTT,6666等。但是在网上search和做一些研究,我找不到解决scheme。
我觉得正则expression式看起来类似于这样的:“^ [(\ w)+] $”
但是,这将只是find任何单词字符,并将其replace,所以我需要设置searchfind任何一个字符,一遍又一遍地重复。
我看到有人有“^(。)\ 1 + $”这似乎是做的伎俩,但它切断了我不想search的数据的结尾。
我感到震惊的是没有任何话题,我认为正则expression式是最简单的方法来find它,而不是做一个硬代码,例如。 遍历单元格值并检查每个字符。
感谢它一整天都在伤脑筋。
你可以尝试这样的事情。 我改变了你的正则expression式(.)\1+
这样可以去除重复的字符。 不要忘了添加正则expression式工具>参考> Microsoft VBScript正则expression式5.5。
公共函数cleanRange(单元格为范围) Dim pattern As String:pattern =“(。)\ 1+” Dim subst As String:subst =“$ 1” 昏暗的正则expression式作为新的RegExp 昏暗的细胞作为范围 对于细胞中的每个细胞 用正则expression式 .Global = True .pattern =模式 如果.Test(cell.Value)那么 cell.Value = .Replace(cell.Value,subst) 万一 结束 下一个单元格 结束function
我这样编码,这就是我需要的方式。
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