INHOUDSOPGAWE
In hierdie artikel sal jy leer hoe om spesifieke karakters uit 'n teksstring uit te vee en ongewenste karakters tegelyk uit verskeie selle te verwyder.
Wanneer jy data na Excel invoer van iewers anders, 'n hele klomp spesiale karakters kan na jou werkblaaie reis. Wat selfs meer frustrerend is, is dat sommige karakters onsigbaar is, wat ekstra wit spasie voor, na of binne teksstringe produseer. Hierdie tutoriaal verskaf oplossings vir al hierdie probleme, wat jou die moeite spaar om deur die data sel-vir-sel te gaan en ongewenste karakters met die hand uit te wis.
Verwyder spesiale karakter uit Excel-sel
Om 'n spesifieke karakter uit 'n sel te skrap, vervang dit met 'n leë string deur die SUBSTITUT-funksie in sy eenvoudigste vorm te gebruik:
SUBSTITUTE( sel, char, "")Om byvoorbeeld 'n vraagteken uit A2 uit te roei, is die formule in B2:
=SUBSTITUTE(A2, "?", "")
Om 'n karakter wat nie op jou sleutelbord aanwesig is nie, kan jy dit vanaf die oorspronklike sel na die formule kopieer/plak.
Byvoorbeeld, hier is hoe jy van 'n omgekeerde vraagteken ontslae kan raak:
=SUBSTITUTE(A2, "¿", "")
Maar as 'n ongewenste karakter onsigbaar is of nie korrek kopieer nie, hoe plaas jy dit in die formule? Soek eenvoudig sy kodenommer deur die KODE-funksie te gebruik.
In ons geval kom die ongewenste karakter ("¿") laaste in sel A2, dus gebruik ons 'n kombinasievan die KODE- en REGS-funksies om sy unieke kodewaarde, wat 191 is, te herwin:
=CODE(RIGHT(A2))
Sodra jy die karakter se kode kry, bedien die ooreenstemmende CHAR funksie na die generiese formule hierbo. Vir ons datastel gaan die formule soos volg:
=SUBSTITUTE(A2, CHAR(191),"")
Let wel. Die PLAASVERVANGER-funksie is hooflettergevoelig , wat beteken dat dit kleinletters en hoofletters as verskillende karakters behandel. Hou dit asseblief in gedagte as jou ongewenste karakter 'n brief is.
Vee veelvuldige karakters uit string uit
In een van die vorige artikels het ons gekyk hoe om spesifieke karakters uit stringe in Excel te verwyder deur verskeie PLAASVERVANGERS-funksies in mekaar te nes. Dieselfde benadering kan gebruik word om twee of meer ongewenste karakters op een slag uit te skakel:
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( sel , char1 , ""), char2 , ""), char3 , "")Om byvoorbeeld normale uitroep- en vraagtekens sowel as die omgekeerde uit 'n teksstring in A2 uit te roei, gebruik hierdie formule:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "")
Dieselfde kan gedoen word met behulp van die CHAR-funksie, waar 161 die karakterkode vir "¡" is en 191 die karakterkode vir "¿" is:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Neste PLAASVERVANGER-funksies werk goed vir 'n redelike aantal karakters, maar as jy dosyne karakters het om te verwyder, word die formule te lank en moeilik om te bestuur. Die volgende voorbeeld demonstreer ameer kompakte en elegante oplossing.
Verwyder alle ongewenste karakters gelyktydig
Die oplossing werk net in Excel vir Microsoft 365
Soos jy waarskynlik weet, Excel 365 het 'n spesiale funksie wat jou in staat stel om jou eie funksies te skep, insluitend dié wat rekursief bereken. Hierdie nuwe funksie word LAMBDA genoem, en jy kan volledige besonderhede daaroor vind in die tutoriaal wat hierbo gekoppel is. Hieronder illustreer ek die konsep met 'n paar praktiese voorbeelde.
'n Gepasmaakte LAMBDA-funksie om ongewenste karakters te verwyder is soos volg:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))
Om hierdie funksie in jou werkblaaie te kan gebruik, moet jy dit eers 'n naam gee. Hiervoor, druk Ctrl + F3 om die Naambestuurder oop te maak, en definieer dan 'n Nuwe Naam op hierdie manier:
- In die Naam boks, voer die funksie se naam in: RemoveChars .
- Stel die omvang na Werkboek .
- In die Verwys na boks, plak die formule hierbo.
- Voer opsioneel die beskrywing van die parameters in die Kommentaar boks in. Die parameters sal vertoon word wanneer jy 'n formule in 'n sel tik.
- Klik OK om jou nuwe funksie te stoor.
Vir die gedetailleerde instruksies, sien asseblief Hoe om 'n pasgemaakte LAMBDA-funksie te benoem.
Sodra die funksie 'n naam gekry het, kan jy daarna verwys soos enige inheemse formule.
Vanuit die gebruiker se oogpunt , die sintaksis van ons persoonlike funksie is so eenvoudig sooshierdie:
VerwyderChars(string, chars)Waar:
- String - is die oorspronklike string, of 'n verwysing na die sel/reeks wat die string( s).
- Karakters - karakters om uit te vee. Kan deur 'n teksstring of 'n selverwysing voorgestel word.
Geriefshalwe voer ons ongewenste karakters in een of ander sel in, sê D2. Om daardie karakters van A2 te verwyder, is die formule:
=RemoveChars(A2, $D$2)
Vir die formule om korrek te werk, let asseblief op die volgende dinge:
- In D2 , word karakters sonder spasies gelys, tensy jy ook spasies wil uitskakel.
- Die adres van die sel wat die spesiale karakters bevat, is gesluit met die $-teken ($D$2) om te verhoed dat die verwysing verander wanneer die formule na die onderstaande selle.
En dan sleep ons eenvoudig die formule af en laat al die karakters wat in D2 gelys is uit selle A2 tot A6 verwyder:
Om veelvuldige selle met 'n enkele formule skoon te maak, verskaf die reeks A2:A6 vir die 1ste argument:
=RemoveChars(A2:A6, D2)
Aangesien die formule slegs in die boonste sel ingevoer word, jy hoef nie bekommerd te wees oor die sluit van die selkoördinate nie - 'n relatiewe verwysing (D2) werk goed in hierdie geval. En as gevolg van ondersteuning vir dinamiese skikkings, mors die formule outomaties in al die verwysde selle:
Verwyder 'n voorafbepaalde karakterstel
Om 'n voorafbepaalde stel van karakters uit verskeie selle, kan jy skepnog 'n LAMBDA wat die hoof RemoveChars funksie oproep en die ongewenste karakters in die 2de parameter spesifiseer. Byvoorbeeld:
Om spesiale karakters uit te vee, het ons 'n pasgemaakte funksie genaamd RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
To verwyder nommers van teksstringe, ons het nog een funksie geskep met die naam RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Albei die bogenoemde funksies is supermaklik om te gebruik aangesien hulle net een argument benodig - die oorspronklike string.
Om spesiale karakters van A2 uit te skakel, is die formule:
=RemoveSpecialChars(A2)
Om slegs numeriese karakters uit te vee:
=RemoveNumbers(A2)
Hoe hierdie funksie werk:
In wese loop die RemoveChars -funksie deur die lys van chars en verwyder een karakter op 'n slag. Voor elke rekursiewe oproep kontroleer die IF-funksie die oorblywende tekens. As die chars -string nie leeg is nie (chars"), roep die funksie homself. Sodra die laaste karakter verwerk is, gee die formule string terug in sy huidige vorm en gaan uit.
Vir die gedetailleerde formule-ontleding, sien asseblief Rekursiewe LAMBDA om ongewenste karakters te verwyder.
Verwyder spesiale karakters met VBA
Die funksies werk in alle weergawes van Excel
As die LAMBDA-funksie nie in jou Excel beskikbaar is nie, verhoed niks jou van die skep van 'n soortgelyke funksie met VBA. 'n Gebruiker-gedefinieerdefunksie (UDF) kan op twee maniere geskryf word.
Gepasmaakte funksie om spesiale karakters rekursief te skrap:
Hierdie kode emuleer die logika van die LAMBDA-funksie wat hierbo bespreek is.
Funksie 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 FunksieGepasmaakte funksie om spesiale karakters nie-rekursief te verwyder:
Hier gaan ons deur ongewenste karakters van 1 tot Len(chars) en vervang die wat in die oorspronklike string gevind word met niks. Die MID-funksie trek ongewenste karakters een vir een en gee dit aan na die Vervang-funksie.
Funksie RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, indeks, 1), "" ) Volgende RemoveUnwantedChars = str EindfunksieVoeg een van die bogenoemde kodes in jou werkboek in soos verduidelik in Hoe om VBA-kode in Excel in te voeg, en jou pasgemaakte funksie is gereed vir gebruik.
Om nie ons nuwe gebruikergedefinieerde funksie met die Lambda-gedefinieerde een te verwar nie, ons het dit anders genoem:
Verwyder OngewensteChars(string, chars)Gestel die oorspronklike string is in A2 en onwelkome karakters in D2, ons kan van hulle ontslae raak deur hierdie formule te gebruik:
= RemoveUnwantedChars(A2, $D$2)
Gepasmaakte funksie met hardgekodeerdekarakters
As jy nie die moeite wil doen om spesiale karakters vir elke formule te verskaf nie, kan jy dit direk in die kode spesifiseer:
Funksie RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Lang karakters = "?¿!¡*%#$(){}[]^&/\~+-" Vir indeks = 1 To Len(chars) str = Vervang(str, Mid(chars, indeks, 1) , "" ) Volgende RemoveSpecialChars = str EindfunksieHou asseblief in gedagte dat die bogenoemde kode vir demonstrasiedoeleindes is. Vir praktiese gebruik, maak seker dat jy al die karakters wat jy wil uitvee in die volgende reël insluit:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Hierdie pasgemaakte funksie heet RemoveSpecialChars en dit vereis net een argument - die oorspronklike string:
RemoveSpecialChars(string)Om spesiale karakters van ons datastel af te stroop, is die formule:
=RemoveSpecialChars(A2)
Verwyder nie-drukbare karakters in Excel
Microsoft Excel het 'n spesiale funksie om nie-drukbare karakters uit te vee - die SKOON-funksie. Tegnies stroop dit die eerste 32 karakters in die 7-bis ASCII-stel (kodes 0 tot 31) af.
Om byvoorbeeld nie-drukbare karakters van A2 af te vee, is hier die formule om te gebruik :
=CLEAN(A2)
Dit sal nie-drukende karakters uitskakel, maar spasies voor/na teks en tussen woorde sal bly.
Om raak ontslae van ekstra spasies , draai die SKOON-formule in die TRIM-funksie:
=TRIM(CLEAN(A2))
Nou, alle voorste enagterste spasies word verwyder, terwyl tussen-in spasies tot 'n enkele spasiekarakter gereduseer word:
As jy absoluut alle spasies binne wil uitvee 'n string, vervang dan die spasie-karakter (kode nommer 32) met 'n leë string:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Sommige spasies of ander onsigbare karakters bly steeds in jou werkblad? Dit beteken dat daardie karakters verskillende waardes in die Unicode-karakterstel het.
Byvoorbeeld, die karakterkode van 'n nie-brekende spasie ( ) is 160 en jy kan dit skoonmaak deur hierdie formule te gebruik:
=SUBSTITUTE(A2, CHAR(160)," ")
Om 'n spesifieke nie-drukkarakter uit te vee, moet jy eers die kodewaarde daarvan vind. Die gedetailleerde instruksies en formule-voorbeelde is hier: Hoe om 'n spesifieke karakter wat nie druk nie te verwyder.
Vee spesiale karakters uit met Ultimate Suite
Ondersteun Excel vir Microsoft 365, Excel 2019 - 2010
In hierdie laaste voorbeeld, laat ek jou die maklikste manier wys om spesiale karakters in Excel te verwyder. Met die Ultimate Suite geïnstalleer, is dit wat jy moet doen:
- Op die Ablebits Data -oortjie, in die Teks -groep, klik Verwyder > Verwyder karakters .
In 'n oomblik sal jy 'n perfekte resultaat kry:
As iets verkeerd loop, moenie bekommerd wees nie - 'n rugsteunkopie van jou werkblad sal outomaties geskep word aangesien die Rugsteun hierdie werkblad -blokkie by verstek gekies is.
Nuuskierig om ons Verwyder-nutsding te probeer? 'n Skakel na die evalueringsweergawe is reg onder. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!
Beskikbare aflaaie
Vee spesiale karakters uit - voorbeelde (.xlsm-lêer)
Ultimate Suite - proeflopie weergawe (.exe-lêer)