Macro para validar coincidencias en nombres de ciudades

¿Me podrían ayudar con una macro?
Estoy queriendo hacer una en donde me reconozca el nombre de una ciudad o tome sus coincidencias.
Por ejemplo: Asunción que me reconozca como ASUNCIÓN o asunción o Asunción independientemente a como se escriba que me devuelva la forma correcta de escribir que es Asunción. ¿Esto es posible?

1 Respuesta

Respuesta
1

28.03.17

Buenas noches, Rocío

En realidad, una simple fórmula resuelve esa cuestión. Donde quieras la palabra corregida escribe la siguiente fórmula:

=NOMPROPIO(C4)

Asumiendo que la palabra original estuviera, claro, en la celda C4.

De todos modos, si lo necesitas como una instrucción de macro, esto es lo que buscas:

Sub CorrPalabra()
ActiveCell.Value = WorksheetFunction.Proper(ActiveCell.Value)
End Sub

Esta rutina deja en la celda activa el valor corregido como indicas de lo que haya en ella.

Coméntame si mi solución resuelve lo que necesitabas -y, en tal caso, agradeceré que califiques mi contribución- o escribeme de nuevo aquí, si necesitas más apoyo con esto.

Un abrazo

Fernando

.

Gracias Fernando, pero no me esta funcionando.

La idea es que al realizar una búsqueda o al intentar escribir en una celda ASUNCIÓN más o menos que tome como una lista de valores permitidos y reconozca esa palabra como Asunción. No se si me estoy explicando bien!

.

Hola, Rocío

Tendrás, imagino, una lista de conversión donde para cada ciudad mal escrita tenga su correspondiente palabra correcta. Asígnale un nombre a esa lista de valores permitidos, por ejemplo "ListaCiu"

Luego coloca esta otra rutina en un módulo para que haga la conversión:

Sub Normalizar()
RangoCorr = "ListaCiu" 'nombre del rango de conversión
Set ElArea = Selection
For linea = 0 To Range(RangoCorr).CurrentRegion.Rows.Count - 1
NomActual = Range(RangoCorr).Offset(linea, 0)
NomStand = Range(RangoCorr).Offset(linea, 1)
    ElArea.Replace What:=NomActual, Replacement:=NomStand, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Next
For Each LaCelda In ElArea
    LaCelda.Value = WorksheetFunction.Proper(Trim(LaCelda.Value))
Next
Set ElArea = Nothing
End Sub

Al principio puedes cambiarle el nombre al rango de valores permitidos.

Luego, selecciona el rango de celdas donde efectuar la corrección, primero y ejecuta la macro.

Ella recorrerá la selección y donde encuentre un caso a cambiar lo hará. Por otra parte, en todos los casos colocará la primera letra en mayúscula y el resto en minúsculas.

Espero haberte entendido correctamente.

Saludos
Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas