Taula de continguts
En aquest article, aprendràs a suprimir caràcters específics d'una cadena de text i a eliminar els caràcters no desitjats de diverses cel·les alhora.
Quan importeu dades a Excel des d'un altre lloc, un munt de personatges especials poden viatjar als vostres fulls de treball. El que és encara més frustrant és que alguns caràcters són invisibles, cosa que produeix un espai en blanc addicional abans, després o dins de les cadenes de text. Aquest tutorial ofereix solucions per a tots aquests problemes, evitant-vos la molèstia d'haver de revisar les dades cel·la per cel·la i purgar els caràcters no desitjats a mà.
Elimineu el caràcter especial de la cel·la d'Excel.
Per suprimir un caràcter específic d'una cel·la, substituïu-lo per una cadena buida utilitzant la funció SUBSTITUT en la seva forma més senzilla:
SUBSTITUTE( cel·la, car, "")Per exemple, per eradicar un signe d'interrogació d'A2, la fórmula de B2 és:
=SUBSTITUTE(A2, "?", "")
Per eliminar un caràcter que no està present al teclat, podeu copiar-lo/enganxar-lo a la fórmula des de la cel·la original.
Per exemple, a continuació us indiquem com podeu desfer-vos d'un signe d'interrogació invertit:
=SUBSTITUTE(A2, "¿", "")
Però si un caràcter no desitjat és invisible o no es copia correctament, com ho poseu a la fórmula? Simplement, cerqueu el seu número de codi utilitzant la funció CODI.
En el nostre cas, el caràcter no desitjat ("¿") és el darrer a la cel·la A2, de manera que estem utilitzant una combinació.de les funcions CODE i RIGHT per recuperar el seu valor de codi únic, que és 191:
=CODE(RIGHT(A2))
Un cop obtingueu el codi del personatge, envieu el CHAR corresponent. funció a la fórmula genèrica anterior. Per al nostre conjunt de dades, la fórmula és la següent:
=SUBSTITUTE(A2, CHAR(191),"")
Nota. La funció SUBSTITUTE és diferent entre majúscules i minúscules , és a dir, tracta les minúscules i les majúscules com a caràcters diferents. Tingueu-ho en compte si el vostre caràcter no desitjat és una carta.
Suprimeix diversos caràcters de la cadena
En un dels articles anteriors, vam veure com eliminar caràcters específics de les cadenes d'Excel anidant diverses funcions SUBSTITUTE entre elles. El mateix enfocament es pot utilitzar per eliminar dos o més caràcters no desitjats d'una vegada:
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( cell , char1 , ""), char2 , ""), char3 , "")Per exemple, per eradicar els signes d'exclamació i d'interrogació normals, així com els invertits d'una cadena de text en A2, utilitzeu aquesta fórmula:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")
El mateix es pot fer amb l'ajuda de la funció CHAR, on 161 és el codi de caràcters de "¡" i 191 és el codi de caràcters de "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Les funcions SUBSTITUTE imbricades funcionen bé per a un nombre raonable de caràcters, però si teniu desenes de caràcters per eliminar, la fórmula es fa massa llarga i difícil de gestionar. El següent exemple demostra asolució més compacta i elegant.
Elimineu tots els caràcters no desitjats alhora
La solució només funciona a Excel per a Microsoft 365
Com probablement sabeu, Excel 365 té una funció especial que us permet crear les vostres pròpies funcions, incloses les que calculen recursivament. Aquesta nova funció s'anomena LAMBDA, i podeu trobar-ne tots els detalls al tutorial enllaçat anteriorment. A continuació, il·lustraré el concepte amb un parell d'exemples pràctics.
Una funció LAMBDA personalitzada per eliminar caràcters no desitjats és la següent:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))
Per poder utilitzar aquesta funció als vostres fulls de treball, primer heu d'anomenar-la. Per a això, premeu Ctrl + F3 per obrir el Gestor de noms i, a continuació, definiu un Nou nom d'aquesta manera:
- A Nom. , introduïu el nom de la funció: RemoveChars .
- Definiu l'abast a Workbook .
- A Fa referència a , enganxeu la fórmula anterior.
- Opcionalment, introduïu la descripció dels paràmetres al quadre Comentaris . Els paràmetres es mostraran quan escriviu una fórmula a una cel·la.
- Feu clic a D'acord per desar la funció nova.
Per obtenir instruccions detallades, consulteu Com anomenar una funció LAMBDA personalitzada.
Un cop la funció rep un nom, podeu fer-hi referència com qualsevol fórmula nativa.
Des del punt de vista de l'usuari , la sintaxi de la nostra funció personalitzada és tan senzilla comaixò:
RemoveChars(cadena, caràcters)On:
- String - és la cadena original o una referència a la cel·la/interval que conté la cadena ( s).
- Caràcters : caràcters per suprimir. Es pot representar amb una cadena de text o una referència de cel·la.
Per comoditat, introduïm caràcters no desitjats en alguna cel·la, per exemple D2. Per eliminar aquests caràcters de A2, la fórmula és:
=RemoveChars(A2, $D$2)
Per tal que la fórmula funcioni correctament, tingueu en compte les coses següents:
- A D2 , els caràcters es mostren sense espais, tret que també vulgueu eliminar espais.
- L'adreça de la cel·la que conté els caràcters especials està bloquejada amb el signe $ ($D$2) per evitar que la referència canviï quan es fa front a la fórmula a les cel·les de sota.
A continuació, arrossegueu la fórmula cap avall i suprimim tots els caràcters de la llista D2 de les cel·les A2 a A6:
Per netejar diverses cel·les amb una única fórmula, proporcioneu l'interval A2:A6 per al primer argument:
=RemoveChars(A2:A6, D2)
Com que la fórmula només s'introdueix a la cel·la superior, no us haureu de preocupar per bloquejar les coordenades de la cel·la: una referència relativa (D2) funciona bé en aquest cas. I a causa de la compatibilitat amb matrius dinàmiques, la fórmula s'aboca automàticament a totes les cel·les de referència:
Eliminació d'un conjunt de caràcters predefinit
Per suprimir un conjunt de caràcters predefinit. caràcters de diverses cel·les, podeu crearun altre LAMBDA que crida a la funció principal RemoveChars i especifica els caràcters no desitjats al 2n paràmetre. Per exemple:
Per suprimir caràcters especials , hem creat una funció personalitzada anomenada RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
Per elimineu números de les cadenes de text, hem creat una funció més anomenada RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Les dues funcions anteriors són molt fàcils. per utilitzar-los ja que només requereixen un argument: la cadena original.
Per eliminar caràcters especials d'A2, la fórmula és:
=RemoveSpecialChars(A2)
Per suprimir només caràcters numèrics:
=RemoveNumbers(A2)
Com funciona aquesta funció:
En essència, la funció RemoveChars fa un bucle per la llista de cars i elimina un caràcter alhora. Abans de cada trucada recursiva, la funció IF comprova els caràcters restants. Si la cadena chars no està buida (chars""), la funció es crida a si mateixa. Tan bon punt s'hagi processat l'últim caràcter, la fórmula retorna cadena en la seva forma actual i surt.
Per obtenir el desglossament detallat de la fórmula, vegeu LAMBDA recursiu per eliminar els caràcters no desitjats.
Elimineu caràcters especials amb VBA
Les funcions funcionen en totes les versions d'Excel
Si la funció LAMBDA no està disponible al vostre Excel, res no us ho impedeix de crear una funció similar amb VBA. Un definit per l'usuariLa funció (UDF) es pot escriure de dues maneres.
Funció personalitzada per eliminar caràcters especials recursius :
Aquest codi emula la lògica de la funció LAMBDA comentada anteriorment.
Funció RemoveUnwantedChars(str Com String, chars As String) If ( "" chars) Then str = Replace(str, Left(chars, 1), "" ) chars = Right(cars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Else RemoveUnwantedChars = str End If End FunctionFunció personalitzada per eliminar caràcters especials no recursius :
Aquí passem entre els caràcters no desitjats de l'1 al Len(cars) i substituïu els que es troben a la cadena original per res. La funció MID extreu els caràcters no desitjats un per un i els passa a la funció Reemplaça.
Funció RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Següent RemoveUnwantedChars = str End FunctionInseriu un dels codis anteriors al vostre llibre de treball tal com s'explica a Com inserir codi VBA a Excel i la vostra funció personalitzada estarà preparada per utilitzar-la.
Per no confondre la nostra nova funció definida per l'usuari amb la definida per Lambda, l'hem anomenada de manera diferent:
RemoveUnwantedChars(string, chars)Suposant que la cadena original està en A2 i caràcters no desitjats en D2, ens podem desfer amb aquesta fórmula:
= RemoveUnwantedChars(A2, $D$2)
Funció personalitzada amb codificació en durcaràcters
Si no us voleu preocupar per proporcionar caràcters especials per a cada fórmula, podeu especificar-los directament al codi:
Funció RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Caràcters llargs = "?¿!¡*%#$(){}[]^&/\~+-" Per a índex = 1 A Len(caràcters) str = Substituïu(str, Mitjà (caràcters, índex, 1) , "" ) Next RemoveSpecialChars = str End FunctionSi us plau, tingueu en compte que el codi anterior és per a finalitats de demostració. Per a un ús pràctic, assegureu-vos d'incloure tots els caràcters que voleu suprimir a la línia següent:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Aquesta funció personalitzada s'anomena RemoveSpecialChars i només requereix un argument - la cadena original:
RemoveSpecialChars(string)Per eliminar els caràcters especials del nostre conjunt de dades, la fórmula és:
=RemoveSpecialChars(A2)
Eliminar caràcters no imprimibles a l'Excel
Microsoft Excel té una funció especial per eliminar caràcters no imprimibles: la funció NETEJA. Tècnicament, elimina els primers 32 caràcters del conjunt ASCII de 7 bits (codis del 0 al 31).
Per exemple, per suprimir caràcters no imprimibles d'A2, aquí teniu la fórmula a utilitzar :
=CLEAN(A2)
Això eliminarà els caràcters que no s'imprimeixen, però es mantindran espais abans/després del text i entre les paraules.
Per desfer-se dels espais addicionals , embolicar la fórmula CLEAN a la funció TRIM:
=TRIM(CLEAN(A2))
Ara, tots els principals iels espais posteriors s'eliminen, mentre que els espais intermedis es redueixen a un únic caràcter d'espai:
Si voleu suprimir absolutament tots els espais de dins una cadena i, a més, substituïu el caràcter espai (número de codi 32) per una cadena buida:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Alguns espais o altres caràcters invisibles encara romanen a el teu full de treball? Això vol dir que aquests caràcters tenen valors diferents al conjunt de caràcters Unicode.
Per exemple, el codi de caràcters d'un espai no trencat ( ) és 160 i podeu purgar-lo mitjançant aquesta fórmula:
=SUBSTITUTE(A2, CHAR(160)," ")
Per esborrar un caràcter específic que no s'imprimeix , primer heu de trobar el seu valor de codi. Les instruccions detallades i els exemples de fórmules es troben aquí: Com eliminar un caràcter específic que no s'imprimeix.
Suprimeix caràcters especials amb Ultimate Suite
Admet Excel per a Microsoft 365, Excel 2019 - 2010
En aquest darrer exemple, permeteu-me mostrar-vos la manera més senzilla d'eliminar caràcters especials a Excel. Amb Ultimate Suite instal·lat, això és el que heu de fer:
- A la pestanya Dades d'Ablebits , al grup Text , feu clic a Elimina > Elimina caràcters .
En un moment, obtindreu un resultat perfecte:
Si alguna cosa va malament, no us preocupeu: es crearà automàticament una còpia de seguretat del vostre full de treball, ja que la casella Crea una còpia de seguretat d'aquest full de treball està seleccionada de manera predeterminada.
Vols provar la nostra eina Eliminar? A continuació trobareu un enllaç a la versió d'avaluació. Us agraeixo la lectura i espero veure-us al nostre blog la setmana vinent!
Descàrregues disponibles
Suprimeix caràcters especials - exemples (fitxer .xlsm)
Ultimate Suite - prova versió (fitxer .exe)