【问题标题】:Excel VBA Replace Text with Two ArraysExcel VBA 用两个数组替换文本
【发布时间】:2015-05-22 06:01:21
【问题描述】:

我想用数组替换 A:A 列中的值:

Dim aValueNew() As String
Dim aValueOld() As String

aValueNew = Split("ABC,DEF,GHI", ",")
aValueOld = Split("123,456,789", ",")

123 需要替换为 ABC,456 需要替换为 DEF 等等。

最有效的方法是什么?我正在努力解决如何在循环中包含 Replace 函数,我们将不胜感激。比如:

For i = 0 to i = 2
Range("A:A").Replace What:= aValueOld(i), Replacement:=aValueNew(i), LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False

【问题讨论】:

    标签: arrays string excel vba replace


    【解决方案1】:

    你几乎拥有它。您可能会发现documentation for For...Next 很有帮助。

    Dim i As Long
    For i = 0 To 2
        Range("A:A").Replace What:=aValueOld(i), Replacement:=aValueNew(i), _
            LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
    Next
    

    【讨论】:

    • 感谢让-弗朗索瓦!接下来是缺少的部分:)
    【解决方案2】:

    试试这个代码:

    For i = 0 to UBound(aValueOld)
        Columns("A:A").Select
        Selection.Replace What:= aValueOld(i), Replacement:=aValueNew(i), LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
    

    注意:
    您的 For 声明错误
    如果值的计数是数组的界限,请使用UBound(<Array Name>)

    【讨论】:

    • 谢谢!我想使用 UBound 更安全,以防万一在数组中添加/删除值。
    猜你喜欢
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2017-04-28
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多