Necesito reemplazar una gran cantidad de números con palabras en una hoja de cálculo de Excel. P.ej:
1 = hello
12 = goodbye
4 = cat
etc. Puedo hacerlo con la búsqueda y reemplazo estándar, pero tengo una lista grande con la que trabajar (alrededor de 240 combinaciones de números/palabras), así que pensé que usaría una macro.
Tengo esto:
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
Pero reemplaza el 1 en 12 por lo que la celda lee hola2 en lugar de adiós. ¿Cómo puedo hacer que afecte solo a las celdas que solo contienen el número específico, de la misma manera que funciona "hacer coincidir el contenido completo de la celda"?
Cualquier ayuda se agradece.
Respuesta1
Cambiar el orden está bien, siempre que se reemplacen todos los valores de la hoja. Si su hoja contenía 11 y no iba a ser reemplazada, cambiar el orden la reemplazará con hello1.
Para usar coincidir con toda la celda, especifique
,LookAt:=xlWhole
como otro parámetro del método Reemplazar. Reemplazar es un método válido en un rango, por lo que su bucle For no es necesario. En su lugar puedes especificar
Range("A1:A1000").Replace What:="12", Replacement:="goodbye", LookAt:=xlWhole
Range("A1:A1000").Replace What:="4", Replacement:="cat", LookAt:=xlWhole
Respuesta2
No estoy seguro de si existe una solución mejor, pero lo que eso me dice es ponerlas en orden inverso. Por ejemplo:
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
En ese caso, 12 sería reemplazado primero por "adiós", y cuando aparezca la línea que reemplaza 1 por "hola", ya habría cambiado.
Nuevamente, probablemente haya una solución mejor, pero creo que funcionaría para una solución rápida en los parámetros que describió.