Ynhâldsopjefte
Yn dit artikel sille jo leare hoe't jo spesifike tekens fan in tekststring wiskje en net-winske tekens fan meardere sellen tagelyk fuortsmite.
As jo gegevens ymportearje nei Excel fan earne oars, in hiele protte spesjale karakters kinne nei jo wurkblêden reizgje. Wat noch frustrerend is, is dat guon karakters ûnsichtber binne, wat ekstra wite romte foar, nei of binnen tekststrings produseart. Dit tutorial jout oplossingen foar al dizze problemen, en besparret jo de muoite om troch de gegevens sel foar sel te gean en net winske tekens mei de hân te ferwiderjen.
Spesiaal karakter fuortsmite fan Excel-sel
Om in spesifyk karakter út in sel te wiskjen, ferfange it troch in lege tekenrige troch de funksje SUBSTITUTE yn syn ienfâldichste foarm te brûken:
SUBSTITUTE( sel, char, "")Om bygelyks in fraachteken út A2 te wiskjen, is de formule yn B2:
=SUBSTITUTE(A2, "?", "")
Om in te ferwiderjen karakter dat net oanwêzich is op jo toetseboerd, kinne jo it kopiearje/plakke nei de formule fan 'e orizjinele sel.
Bygelyks, hjir is hoe't jo in omkeard fraachteken kwyt kinne:
=SUBSTITUTE(A2, "¿", "")
Mar as in net winske karakter ûnsichtber is of net goed kopiearret, hoe sette jo it dan yn 'e formule? Fyn it koadenûmer gewoan troch de CODE-funksje te brûken.
Yn ús gefal komt it net winske karakter ("¿") as lêste yn sel A2, dus brûke wy in kombinaasjefan 'e funksjes CODE en RIGHT om syn unike koadewearde werom te heljen, dy't 191 is:
=CODE(RIGHT(A2))
As jo ienris de koade fan it karakter krije, tsjinje de oerienkommende CHAR funksje nei de generike formule hjirboppe. Foar ús dataset giet de formule as folget:
=SUBSTITUTE(A2, CHAR(191),"")
Opmerking. De SUBSTITUTE-funksje is gefoel foar haadletters , wat betsjut dat it lytse en haadletters as ferskillende tekens behannelet. Hâld dat yn gedachten as jo net winske karakter in brief is.
Meardere tekens fan tekenrige wiskje
Yn ien fan 'e foargeande artikels hawwe wy sjoen nei hoe't jo spesifike karakters kinne fuortsmite fan snaren yn Excel troch ferskate SUBSTITUTE-funksjes yn elkoar te nesteljen. Deselde oanpak kin brûkt wurde om twa of mear net winske karakters yn ien kear te eliminearjen:
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( sel , char1 , ""), char2 , ""), char3 , "")Bygelyks, om normale útrop- en fraachtekens en ek de omkearde út in tekststring yn A2 te ferwiderjen, brûk dizze formule:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")
Itselde kin dien wurde mei help fan de CHAR-funksje, wêrby't 161 de karakterkoade is foar "¡" en 191 de karakterkoade foar "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Nêste SUBSTITUTE-funksjes wurkje goed foar in ridlik oantal tekens, mar as jo tsientallen tekens hawwe om te ferwiderjen, wurdt de formule te lang en lestich te behearjen. It folgjende foarbyld toant akompakter en eleganter oplossing.
Fuortsmite alle net winske tekens yn ien kear
De oplossing wurket allinnich yn Excel foar Microsoft 365
Sa't jo wierskynlik witte, Excel 365 hat in spesjale funksje wêrmei jo jo eigen funksjes kinne oanmeitsje, ynklusyf dy dy't rekursyf berekkenje. Dizze nije funksje wurdt neamd LAMBDA, en jo kinne folsleine details deroer fine yn it hjirboppe keppele tutorial. Hjirûnder sil ik it konsept yllustrearje mei in pear praktyske foarbylden.
In oanpaste LAMBDA-funksje om net winske tekens te ferwiderjen is sa:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))
Om dizze funksje yn jo wurkblêden te brûken, moatte jo it earst neame. Druk hjirfoar op Ctrl + F3 om de Name Manager te iepenjen, en definiearje dan in Nije namme op dizze manier:
- Yn de Namme , fier de namme fan de funksje yn: RemoveChars .
- Set de omfang yn op Wurkbook .
- Yn de Refers to doaze, plak de boppesteande formule.
- Opsjoneel, Fier de beskriuwing fan de parameters yn yn it fak Kommentaar . De parameters wurde werjûn as jo in formule yn in sel ynfiere.
- Klik op OK om jo nije funksje op te slaan.
Foar de detaillearre ynstruksjes sjoch asjebleaft Hoe kinne jo in oanpaste LAMBDA-funksje neame.
As de funksje ienris in namme kriget, kinne jo dernei ferwize lykas elke lânseigen formule.
Fanút it eachpunt fan de brûker , de syntaksis fan ús oanpaste funksje is sa ienfâldich asdit:
RemoveChars(string, chars)Wêr:
- String - is de oarspronklike tekenrige, of in ferwizing nei de sel/berik dy't de tekenrige ( s).
- Chars - tekens om te wiskjen. Kin wurde fertsjintwurdige troch in tekststring of in selferwizing.
Foar it gemak ynfiere wy net winske tekens yn guon sel, sis D2. Om dizze tekens fan A2 te ferwiderjen, is de formule:
=RemoveChars(A2, $D$2)
Om de formule goed te wurkjen, nim dan rekken mei de folgjende dingen:
- Yn D2 , tekens wurde neamd sûnder spaasjes, útsein as jo spaasjes ek fuortsmite wolle.
- It adres fan de sel mei de spesjale tekens is beskoattele mei it $ teken ($D$2) om te foarkommen dat de referinsje feroaret by it behanneljen fan de formule nei de ûndersteande sellen.
En dan slepe wy de formule gewoan nei ûnderen en hawwe alle tekens dy't yn D2 neamd binne wiske út sellen A2 oant A6:
Om meardere sellen mei ien formule skjin te meitsjen, leverje it berik A2:A6 foar it 1e argumint:
=RemoveChars(A2:A6, D2)
Om't de formule allinnich yn 'e boppeste sel ynfierd is, jo hoege jo gjin soargen te meitsjen oer it beskoatteljen fan de selkoordinaten - in relative referinsje (D2) wurket goed yn dit gefal. En troch stipe foar dynamyske arrays, spilet de formule automatysk yn alle ferwiisde sellen:
In foarôf definieare tekenset fuortsmite
Om in foarbepaalde set te wiskjen fan karakters út meardere sellen, kinne jo meitsjein oare LAMBDA dy't de haadfunksje RemoveChars ropt en de net-winske tekens spesifisearje yn 'e 2e parameter. Bygelyks:
Om spesjale tekens te wiskjen, hawwe wy in oanpaste funksje makke mei de namme RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
To nûmers fuortsmite fan tekststrings, wy hawwe noch ien funksje makke mei de namme RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Beide boppesteande funksjes binne supermaklik te brûken, om't se mar ien argumint nedich binne - de oarspronklike tekenrige.
Om spesjale tekens fan A2 te eliminearjen, is de formule:
=RemoveSpecialChars(A2)
Om allinich numerike tekens te wiskjen:
=RemoveNumbers(A2)
Hoe wurket dizze funksje:
Yn essinsje loopt de funksje RemoveChars troch de list mei tekens en ferwideret ien karakter tagelyk. Foar elke rekursive oprop kontrolearret de IF-funksje de oerbleaune tekens. As de tekenrige chars net leech is (chars"), ropt de funksje himsels op. Sadree't it lêste karakter ferwurke is, jout de formule string it syn hjoeddeiske foarm werom en giet it út.
Sjoch foar de detaillearre formule-útdieling Rekursive LAMBDA om net-winske tekens te ferwiderjen.
Speciale tekens fuortsmite mei VBA
De funksjes wurkje yn alle ferzjes fan Excel
As de LAMBDA-funksje net beskikber is yn jo Excel, hinderet neat jo fan it meitsjen fan in ferlykbere funksje mei VBA. In brûker-definiearrefunksje (UDF) kin op twa manieren skreaun wurde.
Aanpaste funksje om spesjale tekens te wiskjen rekursyf :
Dizze koade emulearret de logika fan de hjirboppe besprutsen LAMBDA-funksje.
Funksje 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 FunctionOanpaste funksje om spesjale tekens te ferwiderjen net-rekursyf :
Hjir fytse wy troch net-winske tekens fan 1 nei Len (chars) en ferfange dejingen fûn yn 'e orizjinele tekenrige mei neat. De MID-funksje lûkt ien foar ien net-winske tekens en jout se troch oan de funksje Ferfange.
Funksje RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "") Folgjende RemoveUnwantedChars = str EinfunksjeFoegje ien fan 'e boppesteande koades yn jo wurkboek lykas útlein yn Hoe VBA-koade yn Excel ynfoegje, en jo oanpaste funksje is klear foar gebrûk.
Om ús nije troch de brûkers definieare funksje net te betiizjen mei de Lambda-definieare, hawwe wy it oars neamd:
UnwantedChars fuortsmite (string, chars)Oannommen dat de oarspronklike string yn A2 is en ûnwelkome tekens yn D2, wy kinne se kwytreitsje mei dizze formule:
= RemoveUnwantedChars(A2, $D$2)
Oanpaste funksje mei hardcodedkarakters
As jo gjin muoite wolle om spesjale tekens foar elke formule oan te jaan, kinne jo se direkt yn 'e koade oantsjutte:
Funksje RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/\~+-" Foar yndeks = 1 Nei Len(chars) str = Replace(str, Mid(chars, index, 1) , "" ) Folgjende RemoveSpecialChars = str EinfunksjeHâld asjebleaft yn gedachten dat de boppesteande koade is foar demonstraasjedoelen. Foar praktysk gebrûk, wês wis dat jo alle tekens opnimme dy't jo wiskje wolle yn 'e folgjende rigel:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Dizze oanpaste funksje wurdt neamd RemoveSpecialChars en it fereasket mar ien argumint - de orizjinele tekenrige:
RemoveSpecialChars(string)Om spesjale tekens út ús dataset te ferwiderjen, is de formule:
=RemoveSpecialChars(A2)
Net-printbere tekens fuortsmite yn Excel
Microsoft Excel hat in spesjale funksje om net-printbere tekens te wiskjen - de CLEAN-funksje. Technysk stribbet it de earste 32 tekens yn 'e 7-bit ASCII-set (koades 0 oant 31).
Om bygelyks net-printbere tekens fan A2 te wiskjen, is hjir de formule om te brûken :
=CLEAN(A2)
Dit sil net-printende tekens eliminearje, mar spaasjes foar/nei tekst en tusken wurden bliuwe.
Om ferwiderje ekstra spaasjes , wrap de CLEAN-formule yn 'e TRIM-funksje:
=TRIM(CLEAN(A2))
No, alle liedende enefterste spaasjes wurde fuortsmiten, wylst tusken spaasjes wurde fermindere ta ien spaasje karakter:
As jo absolút alle spaasjes binnen wiskje wolle in tekenrige, ferfang dan ek it spaasjeteken (koadenûmer 32) troch in lege tekenrige:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Guon spaasjes of oare ûnsichtbere tekens bliuwe noch yn dyn wurkblêd? Dat betsjut dat dy karakters ferskillende wearden hawwe yn de Unicode-tekenset.
Bygelyks is de karakterkoade fan in net-brekkende romte ( ) 160 en jo kinne it skjinmeitsje mei dizze formule:
=SUBSTITUTE(A2, CHAR(160)," ")
Om in spesifyk net-printsjen karakter te wiskjen, moatte jo de koadewearde earst fine. De detaillearre ynstruksjes en formulefoarbylden binne hjir: Hoe kinne jo in spesifyk net-printsjen karakter fuortsmite.
Spesjale tekens wiskje mei Ultimate Suite
Stipe Excel foar Microsoft 365, Excel 2019 - 2010
Lit my yn dit lêste foarbyld jo de maklikste manier sjen litte om spesjale tekens yn Excel te ferwiderjen. Mei de Ultimate Suite ynstalleare, is dit wat jo moatte dwaan:
- Op de Ablebits Data ljepper, yn de Tekst groep, klikje op Fuortsmite > Tekens fuortsmite .
Yn in momint krije jo in perfekt resultaat:
As der wat mis giet, meitsje jo gjin soargen - in reservekopy fan jo wurkblêd sil automatysk oanmakke wurde, om't it fakje Backup meitsje fan dit wurkblêd standert selektearre is.
Nijsgjirrich om ús Tool fuortsmite? In keppeling nei de evaluaasjeferzje is rjochts ûnder. Ik tankje jo foar it lêzen en hoopje jo nije wike op ús blog te sjen!
Beskikbere downloads
Spesiale tekens wiskje - foarbylden (.xlsm-bestân)
Ultimate Suite - proef ferzje (.exe-bestân)