在一行VBA中替换多个字符
我在VBA中工作,有一个包含字母表中所有字母的单元格,我想替换所有字母(不带“”,或数字“0”),以及可能的标点符号。我目前的运行方式是:在一行VBA中替换多个字符,vba,replace,Vba,Replace,我在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 = Replac
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个单元格,而且当前运行需要很长时间。sad部分是,整个过程中,此替换在不同的场合运行。使用正则表达式需要Regex.Replace()
函数:
val = Replace(val, "(", "")
val = Replace(val, "]", "")
val = Regex.Replace(val, "[a-z]", "", RegexOptions.IgnoreCase)
您可以尝试使用正则表达式。我不能在一行上得到这个,但它应该比你当前的版本更快,而且行数更少。注意:您需要对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
这很有效,我只需要从VBA板添加功能。工具 引用并检查了Microsoft VBScript正则表达式1.0 Microsoft和VBScript正则表达式5。5@alex只需要两个引用中的一个,也可以使用后期绑定