Como eliminar caracteres especiais / non desexados en Excel

  • Comparte Isto
Michael Brown

Neste artigo, aprenderá a eliminar caracteres específicos dunha cadea de texto e a eliminar os caracteres non desexados de varias celas á vez.

Ao importar datos a Excel desde outro lugar, unha morea de personaxes especiais poden viaxar ás túas follas de traballo. O que é aínda máis frustrante é que algúns caracteres son invisibles, o que produce un espazo en branco adicional antes, despois ou dentro das cadeas de texto. Este titorial ofrece solucións para todos estes problemas, evitando o problema de ter que ir a través dos datos cela por cela e eliminar os caracteres non desexados a man.

    Eliminar caracteres especiais da cela de Excel.

    Para eliminar un carácter específico dunha cela, substitúeo por unha cadea baleira empregando a función SUBSTITUTE na súa forma máis sinxela:

    SUBSTITUTE( cell, char, "")

    Por exemplo, para eliminar un signo de interrogación de A2, a fórmula en B2 é:

    =SUBSTITUTE(A2, "?", "")

    Para eliminar un carácter que non está presente no teu teclado, podes copialo/pegalo na fórmula da cela orixinal.

    Por exemplo, aquí tes como desfacerte dun signo de interrogación invertido:

    =SUBSTITUTE(A2, "¿", "")

    Pero se un carácter non desexado é invisible ou non se copia correctamente, como o colocas na fórmula? Simplemente, busque o seu número de código usando a función CODE.

    No noso caso, o carácter non desexado ("¿") é o último na cela A2, polo que estamos a usar unha combinacióndas funcións CODE e RIGHT para recuperar o seu valor de código único, que é 191:

    =CODE(RIGHT(A2))

    Unha vez que obteña o código do personaxe, envíe o CHAR correspondente función á fórmula xenérica anterior. Para o noso conxunto de datos, a fórmula é a seguinte:

    =SUBSTITUTE(A2, CHAR(191),"")

    Nota. A función SUBSTITUTE é distingue entre maiúsculas e minúsculas , o que significa que trata as letras minúsculas e maiúsculas como caracteres diferentes. Téñao en conta se o seu carácter non desexado é unha carta.

    Eliminar varios caracteres da cadea

    Nun dos artigos anteriores, analizamos como eliminar caracteres específicos das cadeas en Excel aniñando varias funcións SUBSTITUTE unhas noutras. O mesmo enfoque pódese usar para eliminar dous ou máis caracteres non desexados dunha soa vez:

    SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( cell , char1 , ""), char2 , ""), char3 , "")

    Por exemplo, para eliminar os signos de exclamación e interrogación normais, así como os invertidos dunha cadea de texto en A2, use esta fórmula:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")

    O mesmo pódese facer coa axuda da función CHAR, onde 161 é o código de caracteres para "¡" e 191 é o código de caracteres para "¿":

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")

    As funcións SUBSTITUTE aniñadas funcionan ben para un número razoable de caracteres, pero se tes decenas de caracteres que eliminar, a fórmula faise demasiado longa e difícil de xestionar. O seguinte exemplo demostra asolución máis compacta e elegante.

    Elimina todos os caracteres non desexados á vez

    A solución só funciona en Excel para Microsoft 365

    Como probablemente sabes, Excel 365 ten unha función especial que lle permite crear as súas propias funcións, incluídas as que calculan recursivamente. Esta nova función chámase LAMBDA, e podes atopar todos os detalles sobre ela no tutorial ligado anteriormente. A continuación, ilustrarei o concepto cun par de exemplos prácticos.

    Unha función LAMBDA personalizada para eliminar caracteres non desexados é a seguinte:

    =LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))

    Para poder usar esta función nas túas follas de traballo, primeiro debes poñerlle un nome. Para iso, prema Ctrl + F3 para abrir o Xestor de nomes e, a continuación, defina un Nome novo deste xeito:

    1. No Nome , introduza o nome da función: RemoveChars .
    2. Establece o ámbito en Workbook .
    3. No Refírese a , pegue a fórmula anterior.
    4. Opcionalmente, introduza a descrición dos parámetros na caixa Comentarios . Os parámetros mostraranse cando escriba unha fórmula nunha cela.
    5. Faga clic en Aceptar para gardar a súa nova función.

    Para obter instrucións detalladas, consulte Como nomear unha función LAMBDA personalizada.

    Unha vez que a función obtén un nome, podes facer referencia a ela como a calquera fórmula nativa.

    Desde o punto de vista do usuario , a sintaxe da nosa función personalizada é tan sinxela comoisto:

    RemoveChars(cadea, caracteres)

    Onde:

    • Cadea - é a cadea orixinal ou unha referencia á cela/intervalo que contén a cadea( s).
    • Caracteres : caracteres para eliminar. Pódese representar mediante unha cadea de texto ou unha referencia de cela.

    Para comodidade, introducimos caracteres non desexados nalgunha cela, digamos D2. Para eliminar eses caracteres de A2, a fórmula é:

    =RemoveChars(A2, $D$2)

    Para que a fórmula funcione correctamente, teña en conta as seguintes cousas:

    • En D2 , os caracteres móstranse sen espazos, a non ser que desexe eliminar tamén os espazos.
    • O enderezo da cela que contén os caracteres especiais está bloqueado co signo $ ($D$2) para evitar que a referencia cambie ao tratar o fórmula ás celas de abaixo.

    E logo, simplemente arrastramos a fórmula cara abaixo e eliminamos todos os caracteres indicados en D2 das celas A2 a A6:

    Para limpar varias celas cunha única fórmula, proporcione o intervalo A2:A6 para o primeiro argumento:

    =RemoveChars(A2:A6, D2)

    Xa que a fórmula só se introduce na cela superior, non debe preocuparse por bloquear as coordenadas da cela: unha referencia relativa (D2) funciona ben neste caso. E debido ao soporte para matrices dinámicas, a fórmula derrama automaticamente en todas as celas referenciadas:

    Eliminación dun conxunto de caracteres predefinido

    Para eliminar un conxunto predefinido de caracteres de varias celas, pode crearoutro LAMBDA que chama á función principal RemoveChars e especifica os caracteres indesexables no segundo parámetro. Por exemplo:

    Para eliminar caracteres especiais , creamos unha función personalizada chamada RemoveSpecialChars :

    =LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))

    Para eliminar números das cadeas de texto, creamos unha función máis chamada RemoveNumbers :

    =LAMBDA(string, RemoveChars(string, "0123456789"))

    Ambas as dúas funcións anteriores son moi sinxelas para usar xa que requiren só un argumento: a cadea orixinal.

    Para eliminar caracteres especiais de A2, a fórmula é:

    =RemoveSpecialChars(A2)

    Para eliminar só caracteres numéricos:

    =RemoveNumbers(A2)

    Como funciona esta función:

    En esencia, a función RemoveChars recorre a lista de caracteres e elimina un carácter á vez. Antes de cada chamada recursiva, a función IF verifica os caracteres restantes. Se a cadea chars non está baleira (chars""), a función chámase a si mesma. Axiña que se procesou o último carácter, a fórmula devolve cadea a súa forma actual e sae.

    Para obter o desglose detallado da fórmula, consulte LAMBDA recursivo para eliminar os caracteres non desexados.

    Eliminar caracteres especiais con VBA

    As funcións funcionan en todas as versións de Excel

    Se a función LAMBDA non está dispoñible no teu Excel, nada o impide de crear unha función similar con VBA. Un definido polo usuariofunción (UDF) pódese escribir de dúas formas.

    Función personalizada para eliminar caracteres especiais recursivo :

    Este código emula a lóxica da función LAMBDA comentada anteriormente.

    Función 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 Function

    Función personalizada para eliminar caracteres especiais non recursivos :

    Aquí, pasamos por os caracteres non desexados do 1 ao Len(chars) e substitúe os que se atopan na cadea orixinal por nada. A función MID extrae os caracteres non desexados un por un e pásaos á función Substituír.

    Función RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Seguinte RemoveUnwantedChars = str End Function

    Insira un dos códigos anteriores no seu libro de traballo como se explica en Como inserir código VBA en Excel e a súa función personalizada estará lista para o seu uso.

    Para non confundir a nosa nova función definida polo usuario coa definida por Lambda, puxémoslle un nome diferente:

    RemoveUnwantedChars(string, chars)

    Asumindo que a cadea orixinal está en A2 e caracteres non desexados en D2, podemos desfacernos deles usando esta fórmula:

    = RemoveUnwantedChars(A2, $D$2)

    Función personalizada con codificacióncaracteres

    Se non quere preocuparse por proporcionar caracteres especiais para cada fórmula, pode especificalos directamente no código:

    Función RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Caracteres longos = "?¿!¡*%#$(){}[]^&/\~+-" For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1) , "" ) Next RemoveSpecialChars = str End Function

    Ten en conta que o código anterior é para fins de demostración. Para un uso práctico, asegúrese de incluír todos os caracteres que quere eliminar na seguinte liña:

    chars = "?¿!¡*%#$(){}[]^&/\~+-"

    Esta función personalizada chámase RemoveSpecialChars e só precisa un argumento - a cadea orixinal:

    RemoveSpecialChars(string)

    Para eliminar os caracteres especiais do noso conxunto de datos, a fórmula é:

    =RemoveSpecialChars(A2)

    Eliminar caracteres non imprimibles en Excel

    Microsoft Excel ten unha función especial para eliminar caracteres non imprimibles: a función CLEAN. Tecnicamente, elimina os primeiros 32 caracteres do conxunto ASCII de 7 bits (códigos do 0 ao 31).

    Por exemplo, para eliminar caracteres non imprimibles de A2, aquí tes a fórmula a usar :

    =CLEAN(A2)

    Isto eliminará os caracteres que non se imprimen, pero permanecerán espazos antes/despois do texto e entre as palabras.

    Para desfacerse de espazos adicionais , envolve a fórmula CLEAN na función TRIM:

    =TRIM(CLEAN(A2))

    Agora, todos os principais eElimínanse os espazos ao final, mentres que os espazos intermedios redúcense a un único carácter de espazo:

    Se queres eliminar absolutamente todos os espazos do interior unha cadea e, a continuación, substitúe ademais o carácter espazo (número de código 32) por unha cadea baleira:

    =TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))

    Algúns espazos ou outros caracteres invisibles aínda permanecen en a túa folla de traballo? Iso significa que eses caracteres teñen valores diferentes no conxunto de caracteres Unicode.

    Por exemplo, o código de caracteres dun espazo que non se rompe ( ) é 160 e podes eliminalo usando esta fórmula:

    =SUBSTITUTE(A2, CHAR(160)," ")

    Para borrar un carácter específico non imprimible , primeiro cómpre atopar o seu valor de código. As instrucións detalladas e os exemplos de fórmulas están aquí: Como eliminar un carácter específico que non se imprime.

    Eliminar caracteres especiais con Ultimate Suite

    Admite Excel para Microsoft 365, Excel 2019 - 2010

    Neste último exemplo, permíteme mostrarche a forma máis sinxela de eliminar caracteres especiais en Excel. Con Ultimate Suite instalado, isto é o que debes facer:

    1. Na pestana Datos de Ablebits , no grupo Texto , fai clic en Eliminar > Eliminar caracteres .

  • No panel do complemento, escolla o intervalo de orixe, seleccione Eliminar conxuntos de caracteres e escolla a opción desexada da lista despregable ( Símbolos e signos de puntuación nesteexemplo).
  • Preme o botón Eliminar .
  • Ningún momento, obterás un resultado perfecto:

    Se algo sae mal, non te preocupes: crearase automaticamente unha copia de seguranza da túa folla de traballo xa que a caixa Facer unha copia de seguranza desta folla de traballo está seleccionada por defecto.

    Tes curiosidade por probar a nosa ferramenta Eliminar? Abaixo está a ligazón á versión de avaliación. Grazas por ler e espero verte no noso blog a próxima semana!

    Descargas dispoñibles

    Eliminar caracteres especiais - exemplos (ficheiro .xlsm)

    Ultimate Suite - versión de proba versión (ficheiro .exe)

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.