我在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单元格,并且当前运行需要很长时间。可悲的是,这种替换在整个过程中分别进行。
答案 0 :(得分:2)
使用正则表达式需要Regex.Replace()
函数:
val = Replace(val, "(", "")
val = Replace(val, "]", "")
val = Regex.Replace(val, "[a-z]", "", RegexOptions.IgnoreCase)
答案 1 :(得分:1)
您可以尝试使用正则表达式。我不能在单行上获得它,但它应该比你当前的版本更快并且线路更少。请注意,您需要引用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