Hur man raderar specialtecken / oönskade tecken i Excel

  • Dela Detta
Michael Brown

I den här artikeln får du lära dig hur du tar bort specifika tecken från en textsträng och tar bort oönskade tecken från flera celler samtidigt.

När du importerar data till Excel från någon annanstans kan en hel del specialtecken resa till dina kalkylblad. Vad som är ännu mer frustrerande är att vissa tecken är osynliga, vilket ger extra vitt utrymme före, efter eller inuti textsträngar. Den här handledningen ger lösningar för alla dessa problem, vilket gör att du slipper besväret att gå igenom data cell-för-cell och rensa oönskat.tecken för hand.

    Ta bort specialtecken från Excel-cellen

    Om du vill ta bort ett visst tecken från en cell ersätter du det med en tom sträng genom att använda funktionen SUBSTITUTE i sin enklaste form:

    SUBSTITUTE( cell , char , "")

    För att till exempel radera ett frågetecken från A2 är formeln i B2:

    = SUBSTITUT(A2, "?", "")

    Om du vill ta bort ett tecken som inte finns på tangentbordet kan du kopiera/klistra in det i formeln från den ursprungliga cellen.

    Så här kan du till exempel göra dig av med ett inverterat frågetecken:

    = SUBSTITUTE(A2, "¿", "")

    Men om en oönskad karaktär är osynlig eller inte kopieras korrekt, hur lägger du in den i formeln? Du hittar helt enkelt dess kodnummer med hjälp av funktionen CODE.

    I vårt fall kommer det oönskade tecknet ("¿") sist i cell A2, så vi använder en kombination av funktionerna CODE och RIGHT för att hämta dess unika kodvärde, som är 191:

    =KOD(HÖGER(A2))

    När du har fått fram teckenkoden kan du använda motsvarande CHAR-funktion i den generiska formeln ovan. För vårt dataset ser formeln ut på följande sätt:

    = SUBSTITUTE(A2, CHAR(191),"")

    Observera: Funktionen SUBSTITUTE är Skiftlägeskänslig Det innebär att små och stora bokstäver behandlas som olika tecken. Tänk på detta om det oönskade tecknet är en bokstav.

    Ta bort flera tecken från en sträng

    I en av de tidigare artiklarna tittade vi på hur man tar bort specifika tecken från strängar i Excel genom att hägna in flera SUBSTITUTE-funktioner i varandra. Samma tillvägagångssätt kan användas för att ta bort två eller flera oönskade tecken på en gång:

    SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(( cell , char1 , ""), char2 , ""), röding3 , "")

    Om du till exempel vill radera normala utropstecken och frågetecken samt inverterade sådana från en textsträng i A2 använder du den här formeln:

    = SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(A2, "!", """), "¡", """), "?", """), "¿", """)

    Samma sak kan göras med hjälp av CHAR-funktionen, där 161 är teckenkoden för "¡" och 191 är teckenkoden för "¿":

    = SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(A3, "!", """), "?", """), CHAR(161), ""), CHAR(191), "")

    Inbäddade SUBSTITUTE-funktioner fungerar bra för ett rimligt antal tecken, men om du har dussintals tecken att ta bort blir formeln för lång och svårhanterlig. I nästa exempel visas en mer kompakt och elegant lösning.

    Ta bort alla oönskade tecken på en gång

    Lösningen fungerar bara i Excel för Microsoft 365

    Som du säkert vet har Excel 365 en särskild funktion som gör det möjligt att skapa egna funktioner, även sådana som räknar rekursivt. Den nya funktionen heter LAMBDA och du hittar alla detaljer om den i den ovan länkade handledningen. Nedan illustrerar jag konceptet med ett par praktiska exempel.

    En anpassad LAMBDA-funktion för att ta bort oönskade tecken är följande:

    =LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string)))

    För att kunna använda den här funktionen i dina kalkylblad måste du först namnge den. Tryck på Ctrl + F3 för att öppna Namn chef , och sedan definiera en Nytt namn på detta sätt:

    1. I Namn ange funktionens namn: RemoveChars .
    2. Ställ in räckvidden till Arbetsbok .
    3. I Hänvisar till och klistra in formeln ovan i rutan.
    4. Du kan också ange en beskrivning av parametrarna i fältet Kommentarer Parametrarna visas när du skriver en formel i en cell.
    5. Klicka på OK för att spara den nya funktionen.

    Detaljerade instruktioner finns i avsnittet Hur man namnger en anpassad LAMBDA-funktion.

    När funktionen har fått ett namn kan du hänvisa till den som till en vanlig formel.

    Ur användarens synvinkel är syntaxen för vår anpassade funktion så här enkel:

    RemoveChars(sträng, tecken)

    Var:

    • Sträng - är den ursprungliga strängen eller en referens till den cell/det område som innehåller strängen/strängarna.
    • Chars - Tecken som ska raderas. Kan representeras av en textsträng eller en cellreferens.

    För enkelhetens skull matar vi in oönskade tecken i en cell, till exempel D2. För att ta bort dessa tecken från A2 är formeln följande:

    =RemoveChars(A2, $D$2)

    För att formeln ska fungera korrekt måste du tänka på följande:

    • I D2 anges tecken utan mellanslag, såvida du inte vill ta bort mellanslag också.
    • Adressen till cellen som innehåller specialtecknen låses med $-tecknet ($D$2) för att förhindra att referensen ändras när du kopierar formeln till cellerna nedanför.

    Sedan drar vi bara formeln nedåt och raderar alla tecken som anges i D2 från cellerna A2 till A6:

    Om du vill rensa flera celler med en enda formel anger du intervallet A2:A6 som första argument:

    =RemoveChars(A2:A6, D2)

    Eftersom formeln bara skrivs in i den översta cellen behöver du inte oroa dig för att låsa cellkoordinaterna - en relativ referens (D2) fungerar bra i det här fallet. Och tack vare stöd för dynamiska matriser sprids formeln automatiskt till alla celler som det hänvisas till:

    Ta bort en fördefinierad teckenuppsättning

    Om du vill ta bort en fördefinierad uppsättning tecken från flera celler kan du skapa en annan LAMBDA som anropar huvudfunktionen RemoveChars och ange de oönskade tecknen i den andra parametern. Till exempel:

    Ta bort specialtecken har vi skapat en anpassad funktion som heter RemoveSpecialChars :

    =LAMBDA(string, RemoveChars(string, "?¿!¡*%#@^"))

    Till ta bort siffror från textsträngar har vi skapat ytterligare en funktion som heter RemoveNumbers :

    =LAMBDA(string, RemoveChars(string, "0123456789"))

    Båda ovanstående funktioner är mycket enkla att använda eftersom de bara kräver ett argument - den ursprungliga strängen.

    För att eliminera specialtecken från A2 är formeln:

    =RemoveSpecialChars(A2)

    För att radera endast numeriska tecken:

    =RemoveNumbers(A2)

    Hur den här funktionen fungerar:

    I huvudsak är det så att RemoveChars funktionen loopar genom listan över tecken och tar bort ett tecken i taget. Före varje rekursivt anrop kontrollerar IF-funktionen de återstående tecknen. Om chars strängen inte är tom (chars""), anropar funktionen sig själv. Så snart det sista tecknet har behandlats, returnerar formeln sträng den i sin nuvarande form och utgår.

    En detaljerad formelbeskrivning finns i Recursive LAMBDA för att ta bort oönskade tecken.

    Ta bort specialtecken med VBA

    Funktionerna fungerar i alla versioner av Excel

    Om LAMBDA-funktionen inte finns tillgänglig i Excel finns det inget som hindrar dig från att skapa en liknande funktion med VBA. En användardefinierad funktion (UDF) kan skrivas på två sätt.

    Anpassad funktion för att radera specialtecken rekursivt :

    Denna kod efterliknar logiken i LAMBDA-funktionen som diskuterats ovan.

    Funktion 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 Function

    Anpassad funktion för att ta bort specialtecken icke-rekursiv :

    Här går vi igenom oönskade tecken från 1 till Len(chars) och ersätter de tecken som finns i den ursprungliga strängen med ingenting. MID-funktionen tar fram oönskade tecken ett efter ett och skickar dem till Replace-funktionen.

    Funktion RemoveUnwantedChars(str As String , chars As String ) For index = 1 To Len(chars) str = Replace(str, Mid(chars, index, 1), "" ) Next RemoveUnwantedChars = str End Function

    Sätt in en av ovanstående koder i arbetsboken enligt förklaringen i avsnittet Hur man sätter in VBA-koder i Excel, så är din anpassade funktion klar att användas.

    För att inte blanda ihop vår nya användardefinierade funktion med den Lambda-definierade funktionen har vi namngett den annorlunda:

    Ta bort oönskade tecken(sträng, tecken)

    Om vi antar att den ursprungliga strängen finns i A2 och att ovälkomna tecken finns i D2, kan vi göra oss av med dem med hjälp av följande formel:

    = RemoveUnwantedChars(A2, $D$2)

    Anpassad funktion med hårdkodade tecken

    Om du inte vill bry dig om att ange specialtecken för varje formel kan du ange dem direkt i koden:

    Funktion 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 Function

    Tänk på att koden ovan är en demonstrationskod. För praktisk användning bör du se till att alla tecken som du vill ta bort finns med på följande rad:

    chars = "?¿!¡*%#$(){}[]^&/\~+-"

    Denna anpassade funktion heter RemoveSpecialChars och den kräver bara ett argument - den ursprungliga strängen:

    RemoveSpecialChars(sträng)

    För att ta bort specialtecken från vår datamängd är formeln följande:

    =RemoveSpecialChars(A2)

    Ta bort tecken som inte kan skrivas ut i Excel

    Microsoft Excel har en särskild funktion för att ta bort tecken som inte skrivs ut - CLEAN-funktionen. Tekniskt sett tar den bort de första 32 tecknen i 7-bitars ASCII-uppsättningen (koderna 0 till 31).

    Om du till exempel vill radera Icke utskrivbara tecken. från A2, här är formeln som ska användas:

    =CLEAN(A2)

    Detta eliminerar icke-skriftliga tecken, men mellanslag före/efter text och mellan ord finns kvar.

    För att bli av med extra utrymmen , och omsluta CLEAN-formeln i TRIM-funktionen:

    =TRIM(CLEAN(A2))

    Nu tas alla inledande och avslutande mellanslag bort, medan mellanslag mellan mellanslag reduceras till ett enda mellanslagstecken:

    Om du vill radera helt och hållet alla utrymmen i en sträng, ersätter du dessutom mellanslagstecknet (kodnummer 32) med en tom sträng:

    =TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))

    Finns det fortfarande mellanslag eller andra osynliga tecken kvar i arbetsbladet? Det betyder att dessa tecken har olika värden i Unicode-teckensättningen.

    Exempelvis kan teckenkoden för en Icke-brytande utrymme. ( ) är 160 och du kan rensa den med denna formel:

    =SUBSTITUTE(A2, CHAR(160)," "")

    Radera en ett specifikt icke-utskriftstecken. Detaljerade instruktioner och exempel på formler finns här: Hur man tar bort ett visst icke-utskriftstecken.

    Ta bort specialtecken med Ultimate Suite

    Stöder Excel för Microsoft 365, Excel 2019 - 2010

    I det här sista exemplet ska jag visa dig det enklaste sättet att ta bort specialtecken i Excel. Om du har installerat Ultimate Suite måste du göra så här:

    1. På den Uppgifter om Ablebits på fliken Text grupp, klicka på Ta bort > Ta bort tecken .

  • Välj källområdet i tilläggsrutan, välj källområdet, välj Ta bort teckenuppsättningar och välj önskat alternativ i rullgardinslistan ( Symboler & skiljetecken i det här exemplet).
  • Tryck på Ta bort knapp.
  • På ett ögonblick får du ett perfekt resultat:

    Om något går fel behöver du inte oroa dig - en säkerhetskopia av arbetsbladet kommer att skapas automatiskt när Säkerhetskopiera det här arbetsbladet är markerad som standard.

    Nyfiken på att prova vårt verktyg för borttagning? En länk till utvärderingsversionen finns nedan. Tack för att du läste och jag hoppas att vi ses på vår blogg nästa vecka!

    Tillgängliga nedladdningar

    Ta bort specialtecken - exempel (.xlsm-fil)

    Ultimate Suite - testversion (.exe-fil)

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.