Identificar celdas con caracteres extraños

10 envíos / 0 nuevos
Último envío
chronot
Imagen de chronot
Offline
última acción: Hace 4 años 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 30/01/2011 - 22:33
Puntos: 2727
Identificar celdas con caracteres extraños

Estimados amigos del foro:

 

He importado a Excel un archivo txt que contiene el RUC (registro único de contribuyentes) y la razón social de personas jurídicas. En muchos casos me aparecen caracteres extraños, por ejemplo en vez de traerme la palabra "COMISIÓN", aparece "COMISIÓN". Esto generalmente ocurre cuando existen vocales acentuadas y la letra Ñ.

¿Existe alguna forma de identificar o resaltar las celdas que contienen caracteres extraños?

 

 

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 11 horas 27 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Identificar celdas con caracteres extraños

Esto me ha ocurrido alguna vez cuando importo datos de la web o de alguna base de datos donde están en unicode.

parece que microsoft que emplea un estándard ISO-8859 y Unicode tienen más de un punto de desacuerdo.

 

Cuando no puedo combatir la causa porque no puedo modificar el formato de origen, combato los síntomas:

Para otra ocasión creé una función que reemplaza estos códigos extraños y los sustituye por lo que debería haber sido.

Verás que para algunos, como la Á, concateno "Ã" & Chr(129), esto es porque el resultado iso incluye esa à y un carácter no visible.

esta función incluye las vocales mayúsculas y minúsculas acentuadas, y las ñ, pero faltarían las diéresis y otros caracteres. bueno, creo que es sencillo añadir los caracteres que necesites siguiendo esta misma pauta.

 

Function utftoiso(Texto As String) As String

' corrige caracteres extraños motivados por interpretar caracteres unicode como iso

    'acentos minúscula

    Texto = Replace(Texto, "á", "á")

    Texto = Replace(Texto, "é", "é")

    Texto = Replace(Texto, "í", "í")

    Texto = Replace(Texto, "ó", "ó")

    Texto = Replace(Texto, "ú", "ú")

    

    'acentos mayúscula

    Texto = Replace(Texto, "Ã" & Chr(129), "Á")

    Texto = Replace(Texto, "É", "É")

    Texto = Replace(Texto, "Ã" & Chr(141), "Í")

    Texto = Replace(Texto, "Ó", "Ó")

    Texto = Replace(Texto, "Ú", "Ú")

    

 

    'ñ

    Texto = Replace(Texto, "ñ", "ñ")

    Texto = Replace(Texto, "Ñ", "Ñ")

 

'    Texto = Replace(Texto, "", "")

    

    'símbolos

    Texto = Replace(Texto, "¿", "¿")

    Texto = Replace(Texto, "¡", "¡")

    Texto = Replace(Texto, "º", "º")

    Texto = Replace(Texto, "ª", "ª")

    

    utftoiso = Texto

End Function

 

 

 

------
Ya sé Excel, pero necesito más.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 11 horas 27 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
incluso...

Puedes Incluso emplear esta función dentro de una macro que corrija los textos del rango seleccionado:

algo así:

 

Sub ConvertirRangoUTFtoISO()

Dim celda As Range, rangoelegido As Range

Set rangoelegido = Selection

    For Each celda In rangoelegido.Cells

        If Not (celda.HasFormula Or IsEmpty(celda) Or IsNumeric(celda.Value) Or IsDate(celda.Value)) Then

            celda.Value = utftoiso(celda.Value)

        End If

    Next

Set rangoelegido = Nothing

Set celda = Nothing

End Sub

 

------
Ya sé Excel, pero necesito más.

chronot
Imagen de chronot
Offline
última acción: Hace 4 años 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 30/01/2011 - 22:33
Puntos: 2727
Re: Identificar celdas con caracteres extraños

Muchísimas gracias Paco por toda tu ayuda! ¿Cómo podría utilizar esta función? Perdón por mi ignorancia en el tema de las macros, es todavía un mundo por descubrir para mí

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 11 horas 27 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Dónde pongo el código VBA

Empezando con macros....

Bueno, pulsa [Alt] [F11] para mostrar el editor de VBA.

En el foro hay muchos temas sobre esto, por ejemplo

http://www.necesitomas.com/empezando-vba#comment-410

http://www.necesitomas.com/archivo_bas_excel#comment-1624

 

Si vas a utilizar esta función en más de un libro, te interesa guardarla en tu libro de macros personal

Si aún no tienes un libro de macros personal, graba una macro y dile que la quieres guardar en el libro de macros personal, esto fuerza la creación de dicho libro.

añade un módulo a tu libro de macros personal y ahí pones el código de esta función.

 

Si sólo vas a utilizar la función en este libro, entonces guárdala en un módulo dentro de este libro

Abre el editor de VBA e inserta un módulo en este libro y ahí pones el código

insertar un módulo para código en VBA 

 

 

Una vez tengas el código de tu función, Para utilizar la función en un libro, puedes encontrarla en el grupo de funciones definidas por el usuario:

 utilizar una función definida por el usuario en Excel

 

------
Ya sé Excel, pero necesito más.

chronot
Imagen de chronot
Offline
última acción: Hace 4 años 7 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntos
alta: 30/01/2011 - 22:33
Puntos: 2727
Re: Identificar celdas con caracteres extraños

Muchísimas gracias Paco, excelente explicación, sumamente ilustrativa!

Christian (no verificado)
Imagen de Christian
utftoiso

Cuando copio la macro al editor me sale error en la siguiente linea, que debo hacer?

celda.Value = utftoiso(celda.Value)

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 11 horas 27 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Pero ¿has copiado también la

Pero ¿has copiado también la función utftoiso?

¿Qué error te da?

 

 

------
Ya sé Excel, pero necesito más.

Christian (no verificado)
Imagen de Christian
Ok, ahora si me resultó, no

Ok, ahora si me resultó, no había copiado la función, disculpa soy novato en visual basic.

Gracias Paco!!!

boris (no verificado)
Imagen de Christian
caracteres especiales

como indicar a excel en el recorrido de una cadena que identifique parentesis...