【问题标题】:Replace multiple characters in one line VBA替换一行VBA中的多个字符
【发布时间】:2017-02-10 22:07:18
【问题描述】:

我在 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 单元格,并且当前运行需要很长时间。可悲的是,这个替换是在不同的场合运行的。

【问题讨论】:

    标签: vba replace


    【解决方案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
    

    【讨论】:

    • 这行得通,我只需要从 VBA 板上添加功能。工具  引用并检查了 Microsoft VBScript Regular Expressions 1.0 Microsoft 和 VBScript Regular Expressions 5.5
    • @alex 只需要两个引用之一,或者您可以使用后期绑定代替stackoverflow.com/questions/4556910/…
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 2020-07-12
      • 2016-12-30
      • 2018-03-21
      相关资源
      最近更新 更多