Macro Excel: Substitua todo o conteúdo da célula; substitua 1, mas não 10, 11, 21 etc.

Macro Excel: Substitua todo o conteúdo da célula; substitua 1, mas não 10, 11, 21 etc.

Preciso substituir uma grande quantidade de números por palavras em uma planilha do Excel. Por exemplo:

1 = hello
12 = goodbye
4 = cat

Posso fazer isso com a pesquisa e substituição padrão, mas tenho uma lista grande para trabalhar (cerca de 240 combinações de números/palavras), então decidi usar uma macro.

Eu tenho isto:

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

Mas substitui 1 em 12 para que a célula leia hello2 em vez de adeus. Como posso fazer com que isso afete apenas as células que contêm apenas o número específico, da mesma forma que funciona a 'correspondência ao conteúdo inteiro da célula'?

Qualquer ajuda será apreciada.

Responder1

Não há problema em alterar a ordem, desde que todos os valores da planilha sejam substituídos. Se a sua planilha continha 11, mas isso não seria substituído, a alteração do pedido ainda a substituirá por hello1.
Para usar a correspondência de célula inteira, especifique

,LookAt:=xlWhole

como outro parâmetro para o método Replace. Substituir é um método válido em um intervalo, portanto seu loop For não é necessário. Em vez disso, você pode especificar

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

Responder2

Não tenho certeza se existe uma solução melhor, mas o que isso diz em minha mente é colocá-las na ordem inversa. Por exemplo:

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

Nesse caso, 12 seria substituído primeiro por “adeus”, e quando a linha que substitui 1 por “olá” aparecer, ela já teria mudado.

Novamente, provavelmente existe uma solução melhor, mas acho que funcionaria para uma solução rápida nos parâmetros que você descreveu.

informação relacionada