Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用vba去除所有特殊字符_Regex_Vba - Fatal编程技术网

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