Indholdsfortegnelse
I denne artikel lærer du, hvordan du sletter specifikke tegn fra en tekststreng og fjerner uønskede tegn fra flere celler på én gang.
Når du importerer data til Excel fra et andet sted, kan en hel masse specialtegn rejse til dine regneark. Hvad der er endnu mere frustrerende er, at nogle tegn er usynlige, hvilket giver ekstra hvidt mellemrum før, efter eller inde i tekststrenge. Denne vejledning giver løsninger på alle disse problemer og sparer dig for besværet med at skulle gå gennem dataene celle for celle og rense uønskettegn i hånden.
Fjern specialtegn fra Excel-celle
Hvis du vil slette et bestemt tegn fra en celle, skal du erstatte det med en tom streng ved at bruge SUBSTITUTE-funktionen i sin enkleste form:
SUBSTITUTE( celle , char , "")For at fjerne et spørgsmålstegn fra A2 er formlen i B2 f.eks:
=SUBSTITUT(A2, "?", "")
Hvis du vil fjerne et tegn, der ikke findes på dit tastatur, kan du kopiere/indsætte det i formlen fra den oprindelige celle.
Her kan du f.eks. se, hvordan du kan fjerne et omvendt spørgsmålstegn:
=SUBSTITUT(A2, "¿", "")
Men hvis en uønsket karakter er usynlig eller ikke kopieres korrekt, hvordan indsættes den så i formlen? Du skal blot finde kodenummeret ved at bruge funktionen CODE.
I vores tilfælde kommer det uønskede tegn ("¿") sidst i celle A2, så vi bruger en kombination af funktionerne CODE og RIGHT til at hente den unikke kodeværdi, som er 191:
=KODE(HØJRE(A2))
Når du har fået karakterens kode, skal du anvende den tilsvarende CHAR-funktion i den generiske formel ovenfor. For vores datasæt ser formlen således ud:
=SUBSTITUTE(A2, CHAR(191),"")
Bemærk. SUBSTITUTE-funktionen er skraldefølsom , hvilket betyder, at små og store bogstaver behandles som forskellige tegn. Husk det, hvis dit uønskede tegn er et bogstav.
Slet flere tegn fra en streng
I en af de tidligere artikler så vi på, hvordan man fjerner bestemte tegn fra strenge i Excel ved at indlejre flere SUBSTITUTE-funktioner i hinanden. Den samme fremgangsmåde kan bruges til at fjerne to eller flere uønskede tegn på én gang:
ERSTATNING(ERSTATNING(ERSTATNING(ERSTATNING( celle , char1 , ""), char2 , ""), char3 , "")Hvis du f.eks. vil slette normale udråbs- og spørgsmålstegn samt de omvendte fra en tekststreng i A2, skal du bruge denne formel:
= SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(A2, "!", """), "¡", """), "?", """), "¿", """)
Det samme kan gøres ved hjælp af CHAR-funktionen, hvor 161 er tegnkoden for "¡" og 191 er tegnkoden for "¿":
=SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(SUBSTITUT(A3, "!", """), "?", """), CHAR(161), ""), CHAR(191), "")
Indlejrede SUBSTITUTE-funktioner fungerer fint for et rimeligt antal tegn, men hvis du har snesevis af tegn, der skal fjernes, bliver formlen for lang og vanskelig at administrere. Det næste eksempel viser en mere kompakt og elegant løsning.
Fjern alle uønskede tegn på én gang
Løsningen fungerer kun i Excel til Microsoft 365
Som du sikkert ved, har Excel 365 en særlig funktion, der gør det muligt at oprette dine egne funktioner, herunder funktioner, der beregner rekursivt. Denne nye funktion hedder LAMBDA, og du kan finde alle detaljer om den i den ovenfor linkede tutorial. Nedenfor vil jeg illustrere konceptet med et par praktiske eksempler.
En brugerdefineret LAMBDA-funktion til at fjerne uønskede tegn er som følger:
=LAMBDA(string, chars, IF(chars"", RemoveChars(SUBSTITUTE(string, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), string)))
For at kunne bruge denne funktion i dine regneark skal du først navngive den. Tryk på Ctrl + F3 for at åbne Navn Manager , og derefter definere en Nyt navn på denne måde:
- I den Navn feltet, skal du indtaste funktionens navn: RemoveChars .
- Indstil anvendelsesområdet til Arbejdsbog .
- I den Henviser til feltet, indsæt ovenstående formel.
- Du kan eventuelt indtaste beskrivelsen af parametrene i feltet Kommentarer Parametrene vises, når du skriver en formel i en celle.
- Klik på OK for at gemme din nye funktion.
For detaljerede instruktioner, se Hvordan man navngiver en brugerdefineret LAMBDA-funktion.
Når funktionen har fået et navn, kan du henvise til den som til enhver anden formel.
Set fra brugerens synspunkt er syntaksen for vores brugerdefinerede funktion så enkel som denne:
RemoveChars(string, chars)Hvor:
- String - er den oprindelige streng eller en henvisning til den celle/det område, der indeholder strengen/strengene.
- Karakterer - tegn, der skal slettes. Kan repræsenteres af en tekststreng eller en cellereference.
For nemheds skyld indtaster vi uønskede tegn i en celle, f.eks. D2. For at fjerne disse tegn fra A2 er formlen:
=RemoveChars(A2, $D$2)
For at formlen kan fungere korrekt, skal du være opmærksom på følgende ting:
- I D2 er tegn angivet uden mellemrum, medmindre du også ønsker at fjerne mellemrum.
- Adressen på den celle, der indeholder specialtegnene, er låst med $-tegnet ($D$2) for at forhindre, at referencen ændres, når formlen kopieres til nedenstående celler.
Derefter trækker vi formlen ned og får slettet alle de tegn, der er anført i D2, fra cellerne A2 til A6:
Hvis du vil rense flere celler med en enkelt formel, skal du angive intervallet A2:A6 som det første argument:
=RemoveChars(A2:A6, D2)
Da formlen kun indtastes i den øverste celle, behøver du ikke bekymre dig om at låse cellekoordinaterne - en relativ reference (D2) fungerer fint i dette tilfælde. Og på grund af understøttelsen af dynamiske arrays, spredes formlen automatisk til alle de celler, der henvises til:
Fjernelse af et foruddefineret tegnsæt
Hvis du vil slette et foruddefineret sæt tegn fra flere celler, kan du oprette en anden LAMBDA, der kalder hoved RemoveChars funktionen og angiv de uønskede tegn i den anden parameter, f.eks:
Sådan slettes specialtegn har vi oprettet en brugerdefineret funktion ved navn RemoveSpecialChars :
=LAMBDA(string, RemoveChars(string, "?¿!¡*%#@@^"))
Til fjerne numre fra tekststrenge, har vi oprettet endnu en funktion ved navn RemoveNumbers :
=LAMBDA(string, RemoveChars(string, "0123456789"))
Begge ovenstående funktioner er supernemme at bruge, da de kun kræver ét argument - den oprindelige streng.
For at fjerne specialtegn fra A2, er formlen:
=FjernSpecialChars(A2)
Hvis du kun vil slette numeriske tegn:
=FjernTilbageNumre(A2)
Sådan fungerer denne funktion:
I det væsentlige er det RemoveChars funktionen løber gennem listen over tegn og fjerner et tegn ad gangen. Før hvert rekursivt kald kontrollerer IF-funktionen de resterende tegn. Hvis tegn streng ikke er tom (tegn""), kalder funktionen sig selv. Så snart det sidste tegn er blevet behandlet, returnerer formlen streng den i sin nuværende form og udgår.
Du kan finde en detaljeret opdeling af formlerne i Recursive LAMBDA til at fjerne uønskede tegn.
Fjern specialtegn med VBA
Funktionerne fungerer i alle versioner af Excel
Hvis LAMBDA-funktionen ikke er tilgængelig i Excel, er der intet, der forhindrer dig i at oprette en lignende funktion med VBA. En brugerdefineret funktion (UDF) kan skrives på to måder.
Brugerdefineret funktion til at slette specialtegn rekursiv :
Denne kode efterligner logikken i LAMBDA-funktionen, der er beskrevet ovenfor.
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 FunctionBrugerdefineret funktion til at fjerne specialtegn ikke-rekursiv :
Her gennemgår vi uønskede tegn fra 1 til Len(chars) og erstatter dem, der er fundet i den oprindelige streng, med ingenting. MID-funktionen trækker uønskede tegn ud et efter et og sender dem videre til Replace-funktionen.
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 FunctionIndsæt en af ovenstående koder i din projektmappe som forklaret i Sådan indsætter du VBA-kode i Excel, og din brugerdefinerede funktion er klar til brug.
For ikke at forveksle vores nye brugerdefinerede funktion med den Lambda-definerede funktion, har vi givet den et andet navn:
RemoveUnwantedChars(string, chars)Hvis vi antager, at den oprindelige streng er i A2 og uvelkomne tegn i D2, kan vi fjerne dem ved hjælp af denne formel:
= RemoveUnwantedChars(A2, $D$2)
Brugerdefineret funktion med hardkodede tegn
Hvis du ikke ønsker at bekymre dig om at angive specialtegn for hver formel, kan du angive dem direkte i koden:
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 FunctionHusk, at ovenstående kode er til demonstration. I praktisk brug skal du sørge for at inkludere alle de tegn, du vil slette, i den følgende linje:
chars = "?¿!¡*%#$(){}[]^&/\~+-"
Denne brugerdefinerede funktion hedder RemoveSpecialChars og den kræver kun ét argument - den oprindelige streng:
RemoveSpecialChars(string)For at fjerne specialtegn fra vores datasæt er formlen følgende:
=FjernSpecialChars(A2)
Fjern ikke-printbare tegn i Excel
Microsoft Excel har en særlig funktion til at slette tegn, der ikke trykkes - funktionen CLEAN. Teknisk set fjerner den de første 32 tegn i 7-bit ASCII-sættet (kode 0 til 31).
Hvis du f.eks. vil slette ikke-printbare tegn fra A2, her er formlen, der skal bruges:
=CLEAN(A2)
Dette vil fjerne ikke-skrifttegn, men mellemrum før/efter tekst og mellem ord vil forblive.
For at slippe af med ekstra rum , indpakke CLEAN-formlen i TRIM-funktionen:
=TRIM(CLEAN(A2))
Nu fjernes alle forreste og bageste mellemrum, mens mellemrummene reduceres til et enkelt mellemrumstegn:
Hvis du ønsker at slette helt alle rum i en streng, erstattes mellemrumstegnet (kodenummer 32) desuden med en tom streng:
=TRIM(CLEAN((SUBSTITUTE(A2, CHAR(32), ""))))
Hvis der stadig er nogle mellemrum eller andre usynlige tegn i dit regneark, betyder det, at disse tegn har forskellige værdier i Unicode-tegnsættet.
F.eks. kan tegnkoden for en ikke-brydende mellemrum ( ) er 160, og du kan rense den ved hjælp af denne formel:
=SUBSTITUTE(A2, CHAR(160)," " ")
Sådan slettes en bestemt ikke-trykkende tegn Du skal først finde kodeværdien først. De detaljerede instruktioner og eksempler på formler findes her: Sådan fjerner du et bestemt ikke-trykkende tegn.
Slet specialtegn med Ultimate Suite
Understøtter Excel til Microsoft 365, Excel 2019 - 2010
I dette sidste eksempel vil jeg vise dig den nemmeste måde at fjerne specialtegn i Excel på. Når Ultimate Suite er installeret, skal du gøre følgende:
- På den Ablebits Data under fanen, i fanen Tekst gruppe, klik på Fjern > Fjern tegn .
Om et øjeblik får du et perfekt resultat:
Hvis noget går galt, skal du ikke bekymre dig - en sikkerhedskopi af dit regneark oprettes automatisk som den Sikkerhedskopier dette regneark feltet er som standard markeret.
Er du nysgerrig efter at prøve vores værktøj til fjernelse? Du finder et link til evalueringsversionen lige nedenfor. Jeg takker dig for din læsning og håber at se dig på vores blog i næste uge!
Tilgængelige downloads
Slet specialtegn - eksempler (.xlsm-fil)
Ultimate Suite - prøveversion (.exe-fil)