Tabla de contenido
En este artículo, aprenderá a eliminar caracteres específicos de una cadena de texto y a eliminar caracteres no deseados de varias celdas a la vez.
Al importar datos a Excel desde otro lugar, es posible que un montón de caracteres especiales viajen a sus hojas de cálculo. Lo que es aún más frustrante es que algunos caracteres son invisibles, lo que produce espacio en blanco extra antes, después o dentro de las cadenas de texto. Este tutorial proporciona soluciones para todos estos problemas, evitándole la molestia de tener que revisar los datos celda por celda y purgar los no deseados.caracteres a mano.
Eliminar un carácter especial de una celda de Excel
Para eliminar un carácter específico de una celda, sustitúyalo por una cadena vacía utilizando la función SUSTITUIR en su forma más simple:
SUSTITUIR( célula , char , "")Por ejemplo, para eliminar un signo de interrogación de A2, la fórmula en B2 es:
=SUSTITUIR(A2, "?", "")
Para eliminar un carácter que no esté presente en el teclado, puede copiarlo/pegarlo en la fórmula desde la celda original.
Por ejemplo, así es como puede deshacerse de un signo de interrogación invertido:
=SUSTITUIR(A2, "¿", "")
Pero si un personaje no deseado es invisible o no se copia correctamente, ¿cómo se introduce en la fórmula? Simplemente, busque su número de código utilizando la función CÓDIGO.
En nuestro caso, el carácter no deseado ("¿") aparece en último lugar en la celda A2, por lo que estamos utilizando una combinación de las funciones CÓDIGO y DERECHA para recuperar su valor de código único, que es 191:
=CÓDIGO(DERECHA(A2))
Una vez obtenido el código del carácter, sirve la función CHAR correspondiente a la fórmula genérica anterior. Para nuestro conjunto de datos, la fórmula es la siguiente:
=SUSTITUIR(A2, CHAR(191),"")
Nota: La función SUBSTITUTE es distingue entre mayúsculas y minúsculas Tenga esto en cuenta si el carácter no deseado es una letra.
Borrar varios caracteres de una cadena
En uno de los artículos anteriores, vimos cómo eliminar caracteres específicos de cadenas en Excel anidando varias funciones SUBSTITUTE una dentro de otra. El mismo enfoque se puede utilizar para eliminar dos o más caracteres no deseados de una sola vez:
SUSTITUTO(SUSTITUTO(SUSTITUTO( célula , char1 , ""), char2 , ""), char3 , "")Por ejemplo, para erradicar los signos de exclamación e interrogación normales, así como los invertidos, de una cadena de texto en A2, utilice esta fórmula:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")
Lo mismo puede hacerse con la ayuda de la función CHAR, donde 161 es el código de carácter para "¡" y 191 es el código de carácter para "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Las funciones SUBSTITUTE anidadas funcionan bien para un número razonable de caracteres, pero si tiene docenas de caracteres que eliminar, la fórmula se vuelve demasiado larga y difícil de manejar. El siguiente ejemplo muestra una solución más compacta y elegante.
Eliminar todos los caracteres no deseados a la vez
La solución sólo funciona en Excel para Microsoft 365
Como probablemente sepas, Excel 365 tiene una función especial que te permite crear tus propias funciones, incluyendo aquellas que calculan recursivamente. Esta nueva función se llama LAMBDA, y puedes encontrar todos los detalles sobre ella en el tutorial enlazado arriba. A continuación, ilustraré el concepto con un par de ejemplos prácticos.
Una función LAMBDA personalizada para eliminar caracteres no deseados es la siguiente:
=LAMBDA(cadena, caracteres, IF(caracteres"", RemoveChars(SUBSTITUTE(cadena, LEFT(caracteres, 1), ""), RIGHT(caracteres, LEN(caracteres) -1)), cadena))
Para poder utilizar esta función en sus hojas de cálculo, primero debe asignarle un nombre. Para ello, pulse Ctrl + F3 para abrir la función Nombre Gerente y, a continuación, definir a Nuevo nombre de esta manera:
- En el Nombre introduzca el nombre de la función: EliminarCaracteres .
- Establezca el ámbito en Cuaderno de trabajo .
- En el Se refiere a pegue la fórmula anterior.
- Opcionalmente, introduzca la descripción de los parámetros en el campo Comentarios Los parámetros se mostrarán cuando escriba una fórmula en una celda.
- Haga clic en OK para guardar la nueva función.
Para obtener instrucciones detalladas, consulte Cómo asignar un nombre a una función LAMBDA personalizada.
Una vez que la función recibe un nombre, puedes referirte a ella como a cualquier fórmula nativa.
Desde el punto de vista del usuario, la sintaxis de nuestra función personalizada es así de sencilla:
EliminarCaracteres(cadena, caracteres)Dónde:
- Cadena - es la cadena original, o una referencia a la celda/rango que contiene la(s) cadena(s).
- Caracteres - Caracteres a eliminar. Puede representarse mediante una cadena de texto o una referencia de celda.
Por comodidad, introducimos caracteres no deseados en alguna celda, digamos D2. Para eliminar esos caracteres de A2, la fórmula es:
=RemoveChars(A2, $D$2)
Para que la fórmula funcione correctamente, tenga en cuenta lo siguiente:
- En D2, los caracteres se enumeran sin espacios, a menos que desee eliminar también los espacios.
- La dirección de la celda que contiene los caracteres especiales se bloquea con el signo $ ($D$2) para evitar que la referencia cambie al copiar la fórmula a las celdas inferiores.
Y entonces, simplemente arrastramos la fórmula hacia abajo y tendremos todos los caracteres listados en D2 borrados de las celdas A2 a A6:
Para limpiar varias celdas con una sola fórmula, introduzca el rango A2:A6 como primer argumento:
=EliminarCaras(A2:A6, D2)
Como la fórmula se introduce sólo en la celda superior, no hay que preocuparse por bloquear las coordenadas de la celda: una referencia relativa (D2) funciona bien en este caso. Y gracias a la compatibilidad con las matrices dinámicas, la fórmula se extiende automáticamente a todas las celdas referenciadas:
Eliminar un juego de caracteres predefinido
Para eliminar un conjunto predefinido de caracteres de varias celdas, puede crear otro LAMBDA que llame al principal EliminarCaracteres y especifique los caracteres no deseados en el 2º parámetro. Por ejemplo:
Para eliminar caracteres especiales hemos creado una función personalizada denominada Eliminar caracteres especiales :
=LAMBDA(cadena, RemoveChars(cadena, "?¿!¡*%#@^"))
A eliminar números a partir de cadenas de texto, hemos creado una función más llamada EliminarNúmeros :
=LAMBDA(cadena, RemoveChars(cadena, "0123456789"))
Ambas funciones son muy fáciles de usar, ya que sólo necesitan un argumento: la cadena original.
Para eliminar caracteres especiales de A2, la fórmula es:
=QuitarCarasEspeciales(A2)
Para borrar sólo caracteres numéricos:
=QuitarNúmeros(A2)
Cómo funciona esta función:
En esencia, el EliminarCaracteres recorre la lista de caracteres y elimina un carácter cada vez. Antes de cada llamada recursiva, la función IF comprueba los caracteres restantes. Si el carácter caracteres no está vacía (chars""), la función se llama a sí misma. En cuanto se ha procesado el último carácter, la fórmula devuelve cadena su forma actual y sale.
Para obtener un desglose detallado de la fórmula, consulte LAMBDA recursiva para eliminar caracteres no deseados.
Eliminar caracteres especiales con VBA
Las funciones funcionan en todas las versiones de Excel
Si la función LAMBDA no está disponible en su Excel, nada le impide crear una función similar con VBA. Una función definida por el usuario (UDF) puede escribirse de dos maneras.
Función personalizada para eliminar caracteres especiales recursivo :
Este código emula la lógica de la función LAMBDA comentada anteriormente.
Function RemoveUnwantedChars(str As String , chars As String ) If ( "" chars) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End FunctionFunción personalizada para eliminar caracteres especiales no recursivo :
Aquí, recorremos los caracteres no deseados de 1 a Len(chars) y sustituimos los que se encuentran en la cadena original por nada. La función MID extrae los caracteres no deseados uno a uno y los pasa a la función Replace.
Function RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str End FunctionInserte uno de los códigos anteriores en su libro como se explica en Cómo insertar código VBA en Excel, y su función personalizada está lista para su uso.
Para no confundir nuestra nueva función definida por el usuario con la definida por Lambda, la hemos nombrado de forma diferente:
Eliminar caracteres no deseados(cadena, caracteres)Suponiendo que la cadena original está en A2 y los caracteres no deseados en D2, podemos deshacernos de ellos utilizando esta fórmula:
= Eliminar caracteres no deseados(A2, $D$2)
Función personalizada con caracteres codificados
Si no quiere molestarse en suministrar caracteres especiales para cada fórmula, puede especificarlos directamente en el código:
Function RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/\~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveSpecialChars = str End FunctionTenga en cuenta que el código anterior es para fines de demostración. Para un uso práctico, asegúrese de incluir todos los caracteres que desea eliminar en la línea siguiente:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Esta función personalizada se denomina Eliminar caracteres especiales y sólo requiere un argumento: la cadena original:
EliminarCaracteresEspeciales(cadena)Para eliminar los caracteres especiales de nuestro conjunto de datos, la fórmula es:
=QuitarCarasEspeciales(A2)
Eliminar caracteres no imprimibles en Excel
Microsoft Excel dispone de una función especial para eliminar los caracteres no imprimibles: la función LIMPIAR. Técnicamente, elimina los 32 primeros caracteres del conjunto ASCII de 7 bits (códigos del 0 al 31).
Por ejemplo, para eliminar caracteres no imprimibles a partir de A2, ésta es la fórmula que hay que utilizar:
=CLEAN(A2)
Esto eliminará los caracteres no impresos, pero se mantendrán los espacios antes/después del texto y entre palabras.
Para deshacerse de espacios adicionales envuelva la fórmula CLEAN en la función TRIM:
=TRIM(CLEAN(A2))
Ahora, se eliminan todos los espacios iniciales y finales, mientras que los espacios intermedios se reducen a un único carácter de espacio:
Si desea eliminar absolutamente todos los espacios dentro de una cadena, sustituye además el carácter de espacio (código número 32) por una cadena vacía:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
¿Siguen apareciendo espacios u otros caracteres invisibles en la hoja de cálculo? Eso significa que esos caracteres tienen valores diferentes en el conjunto de caracteres Unicode.
Por ejemplo, el código de caracteres de un espacio sin interrupción ( ) es 160 y puedes purgarlo utilizando esta fórmula:
=SUSTITUIR(A2, CHAR(160)," ")
Para borrar un carácter específico no impreso Las instrucciones detalladas y los ejemplos de fórmulas se encuentran aquí: Cómo eliminar un determinado carácter no impreso.
Eliminar caracteres especiales con Ultimate Suite
Compatible con Excel para Microsoft 365, Excel 2019 - 2010
En este último ejemplo, permíteme mostrarte la forma más sencilla de eliminar caracteres especiales en Excel. Con la Ultimate Suite instalada, esto es lo que tienes que hacer:
- En el Datos de Ablebits en la pestaña Texto grupo, haga clic en Eliminar > Eliminar caracteres .
En un momento, obtendrá un resultado perfecto:
Si algo sale mal, no se preocupe: se creará automáticamente una copia de seguridad de su hoja de cálculo a medida que el programa Copia de seguridad de esta hoja de trabajo está seleccionada por defecto.
¿Quiere probar nuestra herramienta de eliminación? A continuación encontrará un enlace a la versión de evaluación. Le agradezco su lectura y espero verle en nuestro blog la semana que viene.
Descargas disponibles
Borrar caracteres especiales - ejemplos (archivo .xlsm)
Ultimate Suite - versión de prueba (archivo .exe)