Я должен заменить большую сумму чисел со словами в электронной таблице 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 вместо до свидания. Как я могу сделать его просто затронуть клетки, которые только содержат определенное число, путь 'соответствуют всем работам' содержания ячейки?
Любая справка ценится.
Изменение порядка прекрасно, пока каждое значение в листе будет замененным. Если Ваш лист содержал 11, хотя это не было замененным, затем изменение порядка все еще заменит его hello1.
Для использования соответствия вся ячейка указывают
,LookAt:=xlWhole
как другой параметр к методу Замены. Замена является действительным методом для Диапазона, таким образом, Ваш Для цикла не необходим. Можно вместо этого указать
Range("A1:A1000").Replace What:="12", Replacement:="goodbye", LookAt:=xlWhole
Range("A1:A1000").Replace What:="4", Replacement:="cat", LookAt:=xlWhole
Я не уверен, существует ли лучшее решение, но что это говорит в моем уме, помещается их в обратном порядке. Например:
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 "привет", приходит, это уже изменилось бы.
Снова, существует, вероятно, лучшее решение, но я думаю, что это работало бы на быстрое исправление в параметрах, которые Вы описали.