2015-03-19 4 views
2

Я хотел бы заменить значения в столбце A: Использование массивов:Excel VBA замена текста с двумя массивами

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 

ответ

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 
+0

Спасибо Жан-Франсуа! Следующая недостающая часть :) – clippertm

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>)

+0

Спасибо! Я полагаю, что безопаснее использовать UBound, только в том случае, когда значение добавляется/удаляется в массиве. – clippertm