Excel: Una macro para eliminar caracteres raros

Si tenés un archivo Excel con caracteres que no podes identificar, en este truco encontrarás la forma de eliminarlos y detectarlos.
VIE, 6 / NOV / 2015

Una lectora nos envió un archivo con algunos de esos caracteres raros y persistentes. Uno de ellos es el corazón . El método usado para detectar (y luego, eliminar, estos caracteres) es compararlos con todos los caracteres que no correspondan a los caracteres “imprimibles” Es decir, aquellos cuyos códigos ASCII sean menores a 32 (el espacio en blanco) o mayores a 126 (el palito de la ñ):

Function SacaRaros(x)
largo = Len(x)
For i = 1 To Largo
                letra = Mid(x, i, 1)            
codigo = Asc(letra)
                If codigo < 32 or codigo > 126  Then
                                Mid(x, i, 1) = “*”
                End If
Next
SacaRaros = Replace(x, “*”, “”)
End Function 

Esta macro comienza “midiendo” la longitud del dato a analizar (con la función Len). Luego recorre el dato letra por letra (con la función Mid) y toma nota de su código ASCII (con la función Asc). Si este código es menor a 32 o mayor a 126, lo reemplaza provisoriamente por un asterisco que luego reemplaza por un carácter nulo. La razón por la que no eliminamos el carácter extraño inmediatamente después de detectarlo, es que esto altera la longitud del dato (porque le estamos sacando un carácter) y complica su recorrido.

Esta función debería eliminar todos los caracteres “raros” de la lista de nombres de la izquierda. No funciona correctamente en todos los casos, como con el corazón de la celda [B5].

Esta función debería eliminar todos los caracteres “raros” de la lista de nombres de la izquierda. No funciona correctamente en todos los casos, como con el corazón de la celda [B5].

Probamos esta función sobre la planilla que nos enviaron y, efectivamente, fracasa en detectar ese corazón.

Según la función Asc, el código ASCII del corazón es el número 63 que, en realidad, corresponde al signo de pregunta. Ocurre que, con ese valor, la función no está diciendo que no entiende qué carácter es ese. Necesitamos una función capaz de identificar correctamente al corazón y otros caracteres raros. Esa función es AscW. Aplicada al corazón, la función AscW nos devuelve el código 9829. Si en nuestra función SacaRaros, reemplazamos Asc por AscW, la función identificará y reemplazará todos los caracteres raros que nos estén molestando.

¡Comparte esta noticia!

Últimos lanzamientos Ver más