Inhoudsopgave
In dit artikel leert u hoe u specifieke tekens uit een tekststring kunt verwijderen en ongewenste tekens uit meerdere cellen tegelijk kunt verwijderen.
Wanneer u gegevens van elders naar Excel importeert, kunnen een heleboel speciale tekens naar uw werkbladen reizen. Nog frustrerender is dat sommige tekens onzichtbaar zijn, wat extra witruimte oplevert voor, na of binnen tekststrings. Deze handleiding biedt oplossingen voor al deze problemen, zodat u niet de moeite hoeft te nemen om de gegevens cel voor cel door te nemen en ongewenste tekens te verwijderen.karakters met de hand.
Speciaal teken verwijderen uit Excel-cel
Om een specifiek teken uit een cel te verwijderen, vervangt u het door een lege tekenreeks met behulp van de functie SUBSTITUTE in zijn eenvoudigste vorm:
SUBSTITUTE( cel , char , "")Om bijvoorbeeld een vraagteken uit A2 te verwijderen, is de formule in B2:
=SUBSTITUTE(A2, "?", "")
Om een teken dat niet op uw toetsenbord staat te verwijderen, kunt u het vanuit de oorspronkelijke cel naar de formule kopiëren/plakken.
Zo kun je bijvoorbeeld een omgekeerd vraagteken wegwerken:
=SUBSTITUTE(A2, "¿", "")
Maar als een ongewenst karakter onzichtbaar of niet correct kopieert, hoe zet u het dan in de formule? Eenvoudig, zoek zijn codenummer met behulp van de CODE-functie.
In ons geval komt het ongewenste teken ("¿") als laatste in cel A2, dus gebruiken we een combinatie van de functies CODE en RECHTS om de unieke codewaarde ervan, 191, op te halen:
=CODE(RIGHT(A2))
Zodra je de code van het teken hebt, dien je de overeenkomstige CHAR-functie toe aan de algemene formule hierboven. Voor onze dataset gaat de formule als volgt:
=SUBSTITUTE(A2, CHAR(191),"")
Opmerking. De functie SUBSTITUTE is hoofdlettergevoelig Dat betekent dat het kleine letters en hoofdletters als verschillende karakters behandelt. Houd daar rekening mee als uw ongewenste karakter een letter is.
Meerdere tekens uit string verwijderen
In een van de vorige artikelen hebben we bekeken hoe u specifieke tekens uit tekenreeksen in Excel kunt verwijderen door verschillende SUBSTITUTE-functies in elkaar te nestelen. Dezelfde aanpak kan worden gebruikt om twee of meer ongewenste tekens in één keer te verwijderen:
SUBSTITUUT( SUBSTITUUT( SUBSTITUUT( cel , char1 , ""), char2 , ""), char3 , "")Om bijvoorbeeld normale uitroeptekens, vraagtekens en omgekeerde tekens uit een tekststring in A2 te verwijderen, gebruikt u deze formule:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "!", ""), "¡", ""), "?", ""), "¿", "").
Hetzelfde kan worden gedaan met behulp van de CHAR-functie, waarbij 161 de tekencode is voor "¡" en 191 de tekencode voor "¿":
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3, "!", ""), "?", ""), CHAR(161), ""), CHAR(191), "")
Geneste SUBSTITUTE-functies werken prima voor een redelijk aantal tekens, maar als u tientallen tekens moet verwijderen, wordt de formule te lang en moeilijk te beheren. Het volgende voorbeeld toont een compactere en elegantere oplossing.
Alle ongewenste tekens in één keer verwijderen
De oplossing werkt alleen in Excel voor Microsoft 365
Zoals u waarschijnlijk weet, heeft Excel 365 een speciale functie waarmee u uw eigen functies kunt maken, inclusief functies die recursief rekenen. Deze nieuwe functie heet LAMBDA, en u kunt er alle details over vinden in de hierboven gelinkte tutorial. Hieronder zal ik het concept illustreren met een paar praktische voorbeelden.
Een aangepaste LAMBDA-functie om ongewenste tekens verwijderen is als volgt:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string))
Om deze functie in je werkbladen te kunnen gebruiken, moet je hem eerst een naam geven. Druk hiervoor op Ctrl + F3 om het menu Naam Manager en definieer dan een Nieuwe naam op deze manier:
- In de Naam vak, de naam van de functie in: RemoveChars .
- Stel de reikwijdte in op Werkboek .
- In de Verwijst naar vak, plak de bovenstaande formule.
- Voer optioneel de beschrijving van de parameters in het Opmerkingen De parameters worden weergegeven wanneer u een formule in een cel typt.
- Klik op OK om uw nieuwe functie op te slaan.
Voor de gedetailleerde instructies, zie Hoe een aangepaste LAMBDA-functie een naam geven.
Als de functie eenmaal een naam heeft, kunt u ernaar verwijzen zoals naar elke inheemse formule.
Voor de gebruiker is de syntaxis van onze aangepaste functie zo eenvoudig:
RemoveChars(string, chars)Waar:
- String - is de oorspronkelijke string, of een verwijzing naar de cel/het bereik dat de string(s) bevat.
- Chars - Kan worden weergegeven als een tekststring of een celverwijzing.
Voor het gemak voeren we ongewenste tekens in een cel in, bijvoorbeeld D2. Om die tekens uit A2 te verwijderen, is de formule:
=RemoveChars(A2, $D$2)
Opdat de formule correct zou werken, moet u op de volgende zaken letten:
- In D2 worden de tekens zonder spaties weergegeven, tenzij u ook spaties wilt elimineren.
- Het adres van de cel met de speciale tekens wordt vergrendeld met het $-teken ($D$2) om te voorkomen dat de referentie verandert bij het kopiëren van de formule naar de onderstaande cellen.
En dan slepen we gewoon de formule naar beneden en laten we alle tekens die in D2 staan, verwijderen uit de cellen A2 tot en met A6:
Om meerdere cellen met een enkele formule schoon te maken, geeft u het bereik A2:A6 op als 1e argument:
=RemoveChars(A2:A6, D2)
Omdat de formule alleen in de bovenste cel wordt ingevoerd, hoeft u zich geen zorgen te maken over het vergrendelen van de celcoördinaten - een relatieve verwijzing (D2) werkt in dit geval prima. En dankzij de ondersteuning voor dynamische matrices, loopt de formule automatisch door in alle cellen waarnaar wordt verwezen:
Een vooraf gedefinieerde tekenset verwijderen
Om een voorgedefinieerde reeks tekens uit meerdere cellen te verwijderen, kunt u een andere LAMBDA maken die de belangrijkste RemoveChars functie en geef de ongewenste tekens op in de 2e parameter. Bijvoorbeeld:
Verwijderen speciale tekens hebben we een aangepaste functie gemaakt met de naam RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))
Naar nummers verwijderen van tekststrings, hebben we nog een functie gemaakt met de naam RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Beide bovenstaande functies zijn supergemakkelijk te gebruiken, omdat ze slechts één argument nodig hebben - de oorspronkelijke string.
Om speciale tekens van A2, de formule is:
=RemoveSpecialChars(A2)
Alleen verwijderen numerieke tekens:
=RemoveNumbers(A2)
Hoe deze functie werkt:
In wezen is de RemoveChars functie loopt door de lijst van chars en verwijdert één karakter per keer. Voor elke recursieve oproep controleert de IF-functie de resterende karakters. Als de chars string niet leeg is (chars""), roept de functie zichzelf aan. Zodra het laatste teken is verwerkt, retourneert de formule string het zijn huidige vorm en uitgang.
Voor de gedetailleerde formule-uitleg, zie Recursieve LAMBDA om ongewenste tekens te verwijderen.
Speciale tekens verwijderen met VBA
De functies werken in alle versies van Excel
Indien de LAMBDA-functie niet beschikbaar is in uw Excel, belet niets u om een soortgelijke functie te maken met VBA. Een door de gebruiker gedefinieerde functie (UDF) kan op twee manieren worden geschreven.
Aangepaste functie om speciale tekens te verwijderen recursief :
Deze code emuleert de logica van de hierboven besproken LAMBDA-functie.
Functie RemoveUnwantedChars(str As String , chars As String ) Als ( "" chars) Dan str = Replace(str, Left(chars, 1), "" ) chars = Right(chars, Len(chars) - 1) RemoveUnwantedChars = RemoveUnwantedChars(str, chars) Anders RemoveUnwantedChars = str End If End FunctionAangepaste functie om speciale tekens te verwijderen niet-recursief :
Hier lopen we door ongewenste tekens van 1 tot Len(chars) en vervangen de tekens die we in de oorspronkelijke string vinden door niets. De functie MID haalt ongewenste tekens één voor één op en geeft ze door aan de functie Vervangen.
Functie RemoveUnwantedChars(str Als String , chars Als String ) Voor index = 1 Tot Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Volgende RemoveUnwantedChars = str Einde FunctieVoeg een van de bovenstaande codes in uw werkmap in, zoals uitgelegd in Hoe VBA-code in Excel in te voegen, en uw aangepaste functie is klaar voor gebruik.
Om onze nieuwe door de gebruiker gedefinieerde functie niet te verwarren met de door Lambda gedefinieerde functie, hebben we hem een andere naam gegeven:
RemoveUnwantedChars(string, chars)Aangenomen dat de oorspronkelijke string in A2 staat en de ongewenste tekens in D2, kunnen we ze wegwerken met deze formule:
= RemoveUnwantedChars(A2, $D$2)
Aangepaste functie met hardgecodeerde tekens
Als u geen moeite wilt doen om voor elke formule speciale tekens in te voeren, kunt u ze rechtstreeks in de code opgeven:
Functie RemoveSpecialChars(str As String ) As String Dim chars As String Dim index As Long chars = "?¿!¡*%#$(){}[]^&/\~+-" Voor index = 1 Tot Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Volgende RemoveSpecialChars = str Einde FunctieHoud er rekening mee dat de bovenstaande code voor demonstratiedoeleinden is. Voor praktisch gebruik moet u alle tekens die u wilt verwijderen opnemen in de volgende regel:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Deze aangepaste functie heet RemoveSpecialChars en heeft slechts één argument nodig - de oorspronkelijke string:
RemoveSpecialChars(string)Om speciale tekens uit onze dataset te verwijderen, is de formule:
=RemoveSpecialChars(A2)
Niet-afdrukbare tekens verwijderen in Excel
Microsoft Excel heeft een speciale functie om niet-afdrukbare tekens te verwijderen - de functie CLEAN. Technisch gezien worden hiermee de eerste 32 tekens in de 7-bits ASCII-set (codes 0 tot en met 31) verwijderd.
Om bijvoorbeeld te verwijderen niet-afdrukbare tekens van A2, hier is de te gebruiken formule:
=CLEAN(A2)
Hierdoor worden niet-afdrukbare tekens verwijderd, maar er blijven spaties voor/na tekst en tussen woorden.
Om zich te ontdoen van extra ruimtes de CLEAN-formule in de TRIM-functie:
=TRIM(CLEAN(A2))
Nu worden alle voor- en achterspaties verwijderd, terwijl de spaties ertussen worden teruggebracht tot één spatie:
Als u absoluut wilt verwijderen alle ruimtes binnen een tekenreeks, dan vervangt u bovendien het spatieteken (codenummer 32) door een lege tekenreeks:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Staan er nog spaties of andere onzichtbare tekens in uw werkblad? Dat betekent dat die tekens andere waarden hebben in de Unicode-tekenset.
Bijvoorbeeld, de karaktercode van een niet-brekende spatie ( ) is 160 en je kunt het zuiveren met deze formule:
=SUBSTITUTE(A2, CHAR(160)," ")
Om een specifiek niet-drukkend karakter De gedetailleerde instructies en formulevoorbeelden vindt u hier: Hoe verwijder ik een specifiek niet-afdrukbaar teken?
Speciale tekens verwijderen met Ultimate Suite
Ondersteunt Excel voor Microsoft 365, Excel 2019 - 2010
In dit laatste voorbeeld laat ik u de eenvoudigste manier zien om speciale tekens in Excel te verwijderen. Met de Ultimate Suite geïnstalleerd, is dit wat u moet doen:
- Op de Ablebits gegevens tabblad, in de Tekst groep, klik Verwijder > Tekens verwijderen .
Zo meteen krijg je een perfect resultaat:
Als er iets fout gaat, maak je geen zorgen - een reservekopie van je werkblad wordt automatisch aangemaakt als de Een back-up van dit werkblad vakje is standaard geselecteerd.
Benieuwd naar onze Remove tool? Een link naar de evaluatieversie staat hieronder. Bedankt voor het lezen en hopelijk tot volgende week op onze blog!
Beschikbare downloads
Speciale tekens verwijderen - voorbeelden (.xlsm-bestand)
Ultimate Suite - proefversie (.exe bestand)