Cuprins
În acest articol, veți învăța cum să ștergeți anumite caractere dintr-un șir de text și cum să eliminați caracterele nedorite din mai multe celule deodată.
Atunci când importați date în Excel din altă parte, este posibil ca o mulțime de caractere speciale să ajungă în foile dvs. de lucru. Ceea ce este și mai frustrant este faptul că unele caractere sunt invizibile, ceea ce produce spațiu alb suplimentar înainte, după sau în interiorul șirurilor de text. Acest tutorial oferă soluții pentru toate aceste probleme, evitându-vă deranjul de a trece prin datele celulă cu celulă și de a elimina caracterele nedorite.caractere de mână.
Eliminați caracterul special din celula Excel
Pentru a șterge un anumit caracter dintr-o celulă, înlocuiți-l cu un șir de caractere gol, utilizând funcția SUBSTITUTE în forma sa cea mai simplă:
SUBSTITUTE( celulă , char , "")De exemplu, pentru a elimina un semn de întrebare din A2, formula din B2 este:
=SUBSTITUTE(A2, "?", "")
Pentru a elimina un caracter care nu este prezent pe tastatură, îl puteți copia/lipii în formula din celula originală.
De exemplu, iată cum puteți scăpa de un semn de întrebare inversat:
=SUBSTITUTE(A2, "¿", "")
Dar dacă un personaj nedorit este invizibil sau nu se copiază corect, cum îl introduceți în formulă? Pur și simplu, găsiți numărul său de cod folosind funcția CODE.
În cazul nostru, caracterul nedorit ("¿") este ultimul din celula A2, așa că folosim o combinație a funcțiilor CODE și RIGHT pentru a prelua valoarea codului său unic, care este 191:
=CODE(RIGHT(A2))
După ce obțineți codul personajului, utilizați funcția CHAR corespunzătoare la formula generică de mai sus. Pentru setul nostru de date, formula este următoarea:
=SUBSTITUTE(A2, CHAR(191),"")
Notă. Funcția SUBSTITUTE este Sensibil la majuscule și minuscule Înseamnă că tratează literele minuscule și majuscule ca fiind caractere diferite. Vă rugăm să țineți cont de acest lucru dacă caracterul nedorit este o literă.
Ștergeți mai multe caractere dintr-un șir de caractere
Într-unul dintre articolele anterioare, am văzut cum să eliminăm anumite caractere din șiruri de caractere în Excel prin introducerea mai multor funcții SUBSTITUTE una în alta. Aceeași abordare poate fi utilizată pentru a elimina două sau mai multe caractere nedorite dintr-o singură dată:
ÎNLOCUITOR(ÎNLOCUITOR(ÎNLOCUITOR(ÎNLOCUITOR( celulă , char1 , ""), char2 , ""), char3 , "")De exemplu, pentru a elimina semnele de exclamare și de întrebare normale, precum și cele inversate dintr-un șir de text din A2, utilizați această formulă:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", ""), "¿", "")
Același lucru se poate face cu ajutorul funcției CHAR, unde 161 este codul de caracter pentru "¡" și 191 este codul de caracter pentru "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Funcțiile SUBSTITUTE imbricate funcționează bine pentru un număr rezonabil de caractere, dar dacă aveți zeci de caractere de eliminat, formula devine prea lungă și dificil de gestionat. Următorul exemplu demonstrează o soluție mai compactă și mai elegantă.
Eliminați toate caracterele nedorite dintr-o dată
Soluția funcționează numai în Excel pentru Microsoft 365
După cum probabil știți, Excel 365 are o funcție specială care vă permite să vă creați propriile funcții, inclusiv cele care calculează recursiv. Această nouă funcție se numește LAMBDA și puteți găsi detalii complete despre ea în tutorialul cu linkul de mai sus. Mai jos, voi ilustra conceptul cu câteva exemple practice.
O funcție LAMBDA personalizată pentru eliminați caracterele nedorite este după cum urmează:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string)), string))
Pentru a putea utiliza această funcție în foile de calcul, trebuie mai întâi să o denumiți. Pentru aceasta, apăsați Ctrl + F3 pentru a deschide fereastra Nume Manager și apoi se definește a Nume nou în acest mod:
- În Nume introduceți numele funcției: RemoveChars .
- Setați domeniul de aplicare la Caietul de lucru .
- În Se referă la box, lipiți formula de mai sus.
- Opțional, introduceți descrierea parametrilor în rubrica Comentarii Parametrii vor fi afișați atunci când introduceți o formulă într-o celulă.
- Faceți clic pe OK pentru a salva noua funcție.
Pentru instrucțiuni detaliate, vă rugăm să consultați Cum să denumiți o funcție LAMBDA personalizată.
Odată ce funcția primește un nume, vă puteți referi la ea ca la orice formulă nativă.
Din punctul de vedere al utilizatorului, sintaxa funcției noastre personalizate este la fel de simplă ca aceasta:
RemoveChars(string, chars)Unde:
- Șir de caractere - este șirul original sau o referință la celula sau intervalul care conține șirul (șirurile).
- Caractere - Caracterele care urmează să fie șterse. Poate fi reprezentat de un șir de text sau de o referință de celulă.
Pentru comoditate, introducem caractere nedorite într-o celulă, să zicem D2. Pentru a elimina aceste caractere din A2, formula este:
=RemoveChars(A2, $D$2)
Pentru ca formula să funcționeze corect, vă rugăm să țineți cont de următoarele lucruri:
- În D2, caracterele sunt listate fără spații, cu excepția cazului în care doriți să eliminați și spațiile.
- Adresa celulei care conține caracterele speciale este blocată cu semnul $ ($D$2) pentru a împiedica schimbarea referinței atunci când se copiază formula în celulele de mai jos.
Apoi, pur și simplu tragem formula în jos și toate caracterele enumerate în D2 sunt șterse din celulele A2 până la A6:
Pentru a curăța mai multe celule cu o singură formulă, furnizați intervalul A2:A6 pentru primul argument:
=RemoveChars(A2:A6, D2)
Deoarece formula este introdusă doar în celula cea mai de sus, nu trebuie să vă faceți griji cu privire la blocarea coordonatelor celulei - o referință relativă (D2) funcționează bine în acest caz. Și datorită suportului pentru array-uri dinamice, formula se revarsă automat în toate celulele la care se face referire:
Eliminarea unui set de caractere predefinite
Pentru a șterge un set predefinit de caractere din mai multe celule, se poate crea un alt LAMBDA care să apeleze la funcția principală RemoveChars și specificați caracterele nedorite în al doilea parametru. De exemplu:
Pentru a șterge caractere speciale , am creat o funcție personalizată numită RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
La eliminați numerele din șiruri de text, am creat încă o funcție numită RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Ambele funcții de mai sus sunt foarte ușor de utilizat, deoarece necesită un singur argument - șirul original.
Pentru a elimina caractere speciale din A2, formula este:
=RemoveSpecialChars(A2)
Pentru a șterge numai caractere numerice:
=RemoveNumbers(A2)
Cum funcționează această funcție:
În esență, se RemoveChars face o buclă prin lista de caractere și îndepărtează câte un caracter pe rând. Înainte de fiecare apel recursiv, funcția IF verifică caracterele rămase. Dacă caracterul caractere nu este gol (caractere """), funcția se apelează singură. Imediat ce ultimul caracter a fost procesat, formula returnează șir de caractere forma sa actuală și iese din ea.
Pentru o descriere detaliată a formulei, consultați LAMBDA recurentă pentru a elimina caracterele nedorite.
Eliminați caracterele speciale cu VBA
Funcțiile funcționează în toate versiunile de Excel
În cazul în care funcția LAMBDA nu este disponibilă în Excel, nimic nu vă împiedică să creați o funcție similară cu VBA. O funcție definită de utilizator (UDF) poate fi scrisă în două moduri.
Funcție personalizată pentru ștergerea caracterelor speciale recursiv :
Acest cod emulează logica funcției LAMBDA discutată mai sus.
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 FunctionFuncție personalizată pentru a elimina caracterele speciale non-recursiv :
Aici, parcurgem caracterele nedorite de la 1 la Len(chars) și le înlocuim pe cele găsite în șirul original cu nimic. Funcția MID extrage caracterele nedorite unul câte unul și le transmite funcției 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 FunctionIntroduceți unul dintre codurile de mai sus în registrul de lucru, așa cum s-a explicat în Cum să introduceți cod VBA în Excel, iar funcția dvs. personalizată este gata de utilizare.
Pentru a nu confunda noua noastră funcție definită de utilizator cu cea definită de Lambda, am numit-o diferit:
RemoveUnwantedChars(string, chars)Presupunând că șirul original se află în A2 și că caracterele nedorite se află în D2, putem scăpa de ele folosind această formulă:
= RemoveUnwantedChars(A2, $D$2)
Funcție personalizată cu caractere codificate în mod greșit
Dacă nu doriți să vă deranjați să furnizați caractere speciale pentru fiecare formulă, le puteți specifica direct în cod:
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 FunctionVă rugăm să țineți cont de faptul că codul de mai sus este unul demonstrativ. Pentru o utilizare practică, asigurați-vă că includeți toate caracterele pe care doriți să le ștergeți în linia următoare:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Această funcție personalizată se numește RemoveSpecialChars și are nevoie de un singur argument - șirul original:
RemoveSpecialChars(string)Pentru a elimina caracterele speciale din setul nostru de date, formula este:
=RemoveSpecialChars(A2)
Eliminați caracterele neimprimabile în Excel
Microsoft Excel dispune de o funcție specială pentru a șterge caracterele care nu se tipăresc - funcția CLEAN. Din punct de vedere tehnic, aceasta elimină primele 32 de caractere din setul ASCII pe 7 biți (codurile de la 0 la 31).
De exemplu, pentru a șterge caractere neimprimabile din A2, iată formula care trebuie folosită:
=CLEAN(A2)
Acest lucru va elimina caracterele care nu sunt tipărite, dar vor rămâne spațiile înainte/după text și între cuvinte.
Pentru a scăpa de spații suplimentare , înfășurați formula CLEAN în funcția TRIM:
=TRIM(CLEAN(A2))
Acum, toate spațiile de început și de sfârșit sunt eliminate, în timp ce spațiile dintre ele sunt reduse la un singur caracter de spațiu:
Dacă doriți să ștergeți absolut toate spațiile în interiorul unui șir de caractere, apoi înlocuiți suplimentar caracterul spațiu (numărul de cod 32) cu un șir gol:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
În foaia de calcul au rămas încă spații sau alte caractere invizibile? Aceasta înseamnă că acele caractere au valori diferite în setul de caractere Unicode.
De exemplu, codul de caractere al unui spațiu fără întreruperi ( ) este de 160 și îl puteți curăța folosind această formulă:
=SUBSTITUTE(A2, CHAR(160)," " ")
Pentru a șterge un caracter neimprimat specific Instrucțiunile detaliate și exemplele de formule se găsesc aici: Cum să eliminați un anumit caracter neimprimat.
Ștergeți caracterele speciale cu Ultimate Suite
Suportă Excel pentru Microsoft 365, Excel 2019 - 2010
În acest ultim exemplu, permiteți-mi să vă arăt cel mai simplu mod de a elimina caracterele speciale în Excel. Cu Ultimate Suite instalat, iată ce trebuie să faceți:
- Pe Date Ablebits în fila Text grup, faceți clic pe Eliminați > Eliminați caracterele .
Într-o clipă, veți obține un rezultat perfect:
Dacă ceva nu merge bine, nu vă faceți griji - o copie de rezervă a foii de lucru va fi creată automat ca și Faceți o copie de rezervă a acestei foi de lucru este selectată în mod implicit.
Sunteți curioși să încercați instrumentul nostru de eliminare? Un link către versiunea de evaluare este chiar mai jos. Vă mulțumesc pentru lectură și sper să ne vedem pe blog săptămâna viitoare!
Descărcări disponibile
Ștergerea caracterelor speciale - exemple (fișier .xlsm)
Ultimate Suite - versiunea de încercare (fișier .exe)