替换一行VBA中的多个字符



我正在使用 VBA 并且有一个包含字母表中所有字母的单元格,我想替换所有字母(没有任何东西,",或数字,"0"(,以及可能的标点符号。我目前将其运行为:

val = Replace(val, "(", "")
val = Replace(val, "]", "")
val = Replace(val, "A", "")
val = Replace(val, "B", "")
val = Replace(val, "C", "")
val = Replace(val, "D", "")
val = Replace(val, "E", "")
val = Replace(val, "F", "")
val = Replace(val, "G", "")
val = Replace(val, "H", "")
val = Replace(val, "I", "")
val = Replace(val, "J", "")
val = Replace(val, "K", "")
val = Replace(val, "L", "")
val = Replace(val, "M", "")
val = Replace(val, "N", "")
val = Replace(val, "O", "")
val = Replace(val, "P", "")
val = Replace(val, "Q", "")
val = Replace(val, "R", "")
val = Replace(val, "S", "")
val = Replace(val, "T", "")
val = Replace(val, "V", "")
val = Replace(val, "W", "")
val = Replace(val, "X", "")
val = Replace(val, "Y", "")
val = Replace(val, "Z", "")

我试过了:

val = Replace(val, "(", "")
val = Replace(val, "]", "")
val = Replace(val, "[A-TV-Z]", "")

我可以添加一个循环,但计算时间不会改变。

但它不起作用。有没有办法用一行替换 25 行代码,正如我尝试的那样,因为我必须通读 1M 个单元格,并且当前运行需要很长时间。可悲的是,这种替换在整个过程中都在不同的场合运行。

您可以尝试使用正则表达式。 我无法在单行上得到它,但它应该比您当前的版本更快并且行更少。 请注意,您需要引用 Microsoft VBScript 正则表达式库。

Public Function Replacement(sInput) As String
Dim regex As New RegExp
With regex
   .Global = True
   .IgnoreCase = False
End With
regex.pattern = "[A-Z, a-z]"
Replacement = regex.Replace(sInput, "")

End Function

Regex.Replace()函数需要使用正则表达式:

val = Replace(val, "(", "")
val = Replace(val, "]", "")
val = Regex.Replace(val, "[a-z]", "", RegexOptions.IgnoreCase)

最新更新