Regex 如何使用vba去除所有特殊字符
我的数据包含Regex 如何使用vba去除所有特殊字符,regex,vba,Regex,Vba,我的数据包含#、/、'等。我如何才能摆脱所有这些东西,并用“替换它们。我想将此应用于Sheet1所有单元格?如果性能是一个问题,则find regex可能是[#/']+,您可以在子部分开始时关闭屏幕更新(Application.screenUpdate=False),然后在子部分结束之前重新打开(Application.screenUpdate=True)。通常这样的操作需要花费大量的时间,因为它从每个令牌的开头开始,更不用说可能的内存重新分配,而且一次只处理单个字符的替换。显然,这取决于Use
#、/、'
等。我如何才能摆脱所有这些东西,并用“
替换它们。我想将此应用于Sheet1
所有单元格?如果性能是一个问题,则find regex可能是[#/']+
,您可以在子部分开始时关闭屏幕更新(Application.screenUpdate=False
),然后在子部分结束之前重新打开(Application.screenUpdate=True
)。通常这样的操作需要花费大量的时间,因为它从每个令牌的开头开始,更不用说可能的内存重新分配,而且一次只处理单个字符的替换。显然,这取决于UsedRange的大小和令牌的数量。我在一张中等大小的纸上测试了它,其中UsedRange.Count=135702。它运行了大约2秒钟。当性能开始下降时,它可能会急剧下降。重新阅读后,我意识到我关于屏幕更新的评论可能有误导性。关闭屏幕更新不会从根本上提高这种方法的性能。正如您所指出的,它肯定会因使用大型数据集而陷入困境。也就是说,这是一种简单易懂的方法,在很多情况下都是足够的。根据我的经验(我用c++翻译了很多文本),当以书面形式替换多个不同的字符时,这总是一个危险信号,而不是一次。通常速度超过几个数量级。
Sub RemoveSpecChars()
Dim Token As Variant
For Each Token In Array("-", "\", "#") 'etc.
Sheet1.UsedRange.Replace Token, ""
Next Token
End Sub