Макрос Excel: заменить содержимое всей ячейки; заменить 1, но не 10, 11, 21 и т. д.

Макрос Excel: заменить содержимое всей ячейки; заменить 1, но не 10, 11, 21 и т. д.

Мне нужно заменить большое количество цифр словами в таблице Excel. Например:

1 = hello
12 = goodbye
4 = cat

и т. д. Я могу сделать это с помощью стандартного поиска и замены, но мне нужно обработать большой список (около 240 комбинаций чисел/слов), поэтому я решил использовать макрос.

У меня есть это:

Sub findreplacer()
For Each mycell In Range("A1:A1000")
mycell.Replace What:="1", Replacement:="hello"
mycell.Replace What:="12", Replacement:="goodbye"
mycell.Replace What:="4", Replacement:="cat"
Next

End Sub

Но он заменяет 1 в 12, поэтому ячейка читает hello2 вместо goodbye. Как сделать так, чтобы он влиял только на ячейки, содержащие определенное число, как работает «сопоставить все содержимое ячейки»?

Любая помощь приветствуется.

решение1

Изменение порядка допустимо, пока каждое значение в таблице будет заменено. Если ваш лист содержал 11, которые не будут заменены, то изменение порядка все равно заменит их на hello1.
Чтобы использовать сопоставление всей ячейки, укажите

,LookAt:=xlWhole

как еще один параметр метода Replace. Replace — допустимый метод для Range, поэтому ваш цикл For не нужен. Вместо этого вы можете указать

Range("A1:A1000").Replace What:="12", Replacement:="goodbye", LookAt:=xlWhole  
Range("A1:A1000").Replace What:="4", Replacement:="cat", LookAt:=xlWhole

решение2

Я не уверен, есть ли лучшее решение, но, по-моему, это означает, что нужно расположить их в обратном порядке. Например:

Sub findreplacer()
For Each mycell In Range("A1:A1000")
mycell.Replace What:="12", Replacement:="goodbye"
mycell.Replace What:="4", Replacement:="cat"
mycell.Replace What:="1", Replacement:="hello"
Next

End Sub

В этом случае 12 сначала будет заменено на «до свидания», а когда появится строка, заменяющая 1 на «привет», оно уже изменится.

Опять же, возможно, есть лучшее решение, но я думаю, что это сработает для быстрого исправления в описанных вами параметрах.

Связанный контент