arrays - Excel VBA 替换为数组组

标签 arrays excel vba replace

现在我正在使用一种非常低效的替换功能:

Dim Replacement As String
Dim rngRepVal As Object

Set rngRepVal = Sheets("data").Range(Cells(1, 3), Cells(intRowLast, 3))
Replacement = ActiveCell.Value
rngRepVal.Replace What:="123", Replacement:="ABC", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
rngRepVal.Replace What:="234", Replacement:="ABC", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
rngRepVal.Replace What:="456", Replacement:="DEF", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
... [goes on for 50 lines]
Set rngRepVal = Nothing

我想知道这是否可以通过数组来实现。就像是:
Dim aWhat() As String
Dim aReplacement() As String

aWhat = Split("ABC|DEF|GHI|JKL", "|")
aReplacement = Split(Array("123", 456")|Array("789","1000"), "|") '<-not sure how to organise this

基本上 123 和 456 被 ABC 取代,789 和 1000 被 DEF 等取代。在替换循环中>关于如何组织这两个数组的任何见解?谢谢!

最佳答案

您的 Replace (s) 很好 - 它的逐个单元循环和选择效率低下。一次在整个范围内尝试这样的三个替换。

Sub Recut()
Dim rng1 As Range
Set rng1 = Sheets("data").Range(Sheets("data").Cells(1, 3), Sheets("data").Cells(Rows.Count, 3).End(xlUp))
With rng1
    .Replace What:="123", Replacement:="ABC", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
    .Replace What:="234", Replacement:="ABC", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
    .Replace What:="456", Replacement:="DEF", LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False
End With
End Sub

关于arrays - Excel VBA 替换为数组组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158997/

相关文章:

javascript - 为什么在我通过 JavaScript 中的嵌套 for 循环获得我想要获得的输出后却得到 "undefined"?

java - 对象访问和加载

excel - 在一行中引用多个工作表

python - 通过 Excel 制作 CSV 在第一列名称前面给了我 ''

arrays - 更改传递给函数的参数类型时,类型不匹配

excel - 初始化电子表格,计算顺序

asp.net - 使用 Excel VBA 打开 IE 并与 Web 表单交互

javascript - 如何获得用户输入数组的总和?

将 char 数组复制到字符指针数组中

vba - 如何从 vb.net 脚本打开 Solidworks、运行宏和关闭 Solidworks?