Sådan fjerner du tekst eller tal fra Excel-cellen

  • Del Dette
Michael Brown

I denne vejledning lærer du, hvordan du kan adskille tekst fra tal i Excel ved hjælp af originale formler og brugerdefinerede funktioner. Du lærer også, hvordan du kan opdele tekst og tal i to separate kolonner.

Forestil dig dette: Du modtager rå data til analyse og finder ud af, at tal er blandet med tekst i én kolonne. I de fleste situationer vil det være mere praktisk at have dem i separate kolonner for nærmere undersøgelse.

Hvis du arbejder med homogene data, kan du sandsynligvis bruge funktionerne LEFT, RIGHT og MID til at udtrække det samme antal tegn fra den samme position. Men det er et ideelt scenarie for laboratorieforsøg. I det virkelige liv har du sandsynligvis at gøre med forskellige data, hvor tal kommer før tekst, efter tekst eller mellem tekst. Nedenstående eksempler giver løsninger til netop dettesag.

    Sådan fjerner du tekst og beholder tal i Excel-celler

    Løsningen fungerer i Excel 365, Excel 2021 og Excel 2019

    Microsoft Excel 2019 introducerede et par nye funktioner, som ikke er tilgængelige i tidligere versioner, og vi skal bruge en af disse funktioner, nemlig TEXTJOIN, til at fjerne teksttegn fra en celle, der indeholder tal.

    Den generiske formel er:

    TEXTJOIN("", TRUE, IFERROR(MID( celle , ROW(INDIRECT("1:"&LEN( celle ))), 1) *1, ""))

    I Excel 365 og 2021 vil denne også fungere i Excel 365 og 2021:

    TEXTJOIN("", TRUE, IFERROR(MID( celle , SEKVENS(LEN( celle )), 1) *1, ""))

    Ved første øjekast kan formlerne se lidt skræmmende ud, men de virker :)

    Hvis du f.eks. vil fjerne tekst fra tal i A2, skal du indtaste en af nedenstående formler i B2 og derefter kopiere den ned til så mange celler som nødvendigt.

    I Excel 365 - 2019:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1, "")))

    I Excel 2019 skal den indtastes som en arrayformel med Ctrl + Shift + Enter . I Excel med dynamisk array fungerer den som en normal formel, der afsluttes med Enter-tasten.

    I Excel 365 og 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    Resultatet er, at alle teksttegn fjernes fra en celle, og at tal bevares:

    Sådan fungerer denne formel:

    For at forstå logikken bedre, skal vi begynde at undersøge formlen indefra:

    Du bruger enten ROW(INDIRECT("1:"&LEN(string))) eller SEQUENCE(LEN(string))) til at oprette en sekvens af tal, der svarer til det samlede antal tegn i kildestrengen, og derefter indfører du disse sekventielle tal i MID-funktionen som starttal. I B2 ser denne del af formlen således ud:

    MID(A2, {1;2;3;3;4;4;5;5;6;6;7;7;8;8;9;9;10;11;11;12;13;14;15}, 1)

    MID-funktionen udtrækker hvert tegn fra A2 fra det allerførste tegn og returnerer dem som et array:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Dette array ganges med 1. Numeriske værdier overlever uden ændringer, mens multiplikation af et ikke-numerisk tegn resulterer i en #VALUE! fejl:

    {2;1;0;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!}

    IFERROR-funktionen håndterer disse fejl og erstatter dem med tomme strenge:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    Dette endelige array serveres for TEXTJOIN-funktionen, som sammenkæder de ikke-tomme værdier i arrayet ( ignore_empty argumentet sat til TRUE) med en tom streng ("") som afgrænser:

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    Tip. Til Excel 2016 - 2007 findes der også en løsning, men formlen er langt mere kompleks. Du kan finde den i denne vejledning: Sådan uddrager du tal i Excel.

    Brugerdefineret funktion til at fjerne tekst fra tal

    Løsningen fungerer for alle Excel-versioner

    Hvis du bruger en ældre version af Excel eller finder ovenstående formler for svære at huske, er der intet, der forhindrer dig i at oprette din egen funktion med en enklere syntaks og et brugervenligt navn som f.eks. RemoveText En brugerdefineret funktion (UDF) kan skrives på to måder:

    VBA-kode 1:

    Her ser vi på hvert tegn i kildestrengen ét for ét og kontrollerer, om det er numerisk eller ej. Hvis det er et tal, tilføjes tegnet til den resulterende streng.

    Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    VBA-kode 2:

    Koden opretter et objekt til behandling af et regulært udtryk. Ved hjælp af RegExp fjerner vi alle tegn ud over cifrene 0-9 fra kildestrengen.

    Funktion RemoveText(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function

    På små regneark vil begge koder fungere lige godt. På store regneark, hvor funktionen kaldes hundredvis eller tusindvis af gange, vil kode 2, der bruger VBScript.RegExp, fungere hurtigere.

    De detaljerede trin til at indsætte koden i din projektmappe kan findes her: Sådan indsætter du VBA-kode i Excel.

    Uanset hvilken fremgangsmåde du vælger, er funktionen til at slette tekst og efterlade tal så enkel som denne, set fra slutbrugerens synspunkt:

    RemoveText(streng)

    Hvis du f.eks. vil fjerne ikke-numeriske tegn fra celle A2, er formlen i B2:

    =RemoveText(A2)

    Du skal blot kopiere det ned i kolonnen, og du får dette resultat:

    Bemærk. Både de oprindelige formler og den brugerdefinerede funktion udsender en numerisk streng Hvis du vil lave det om til et tal, skal du gange resultatet med 1 eller tilføje nul eller pakke formlen ind i VALUE-funktionen. F.eks:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Sådan fjerner du tal fra en tekststreng i Excel

    Løsningen fungerer i Excel 365, Excel 2021 og Excel 2019

    Formlerne til at fjerne tal fra en alfanumerisk streng er stort set de samme som dem, der blev diskuteret i det foregående eksempel.

    Til Excel 365 - 2019:

    TEXTJOIN("", TRUE, IF(ISERR(MID( celle , ROW(INDIRECT("1:"&LEN( celle ) ) )), 1) *1), MID( celle , ROW(INDIRECT("1:"&LEN( celle ))), 1), ""))

    I Excel 2019 skal du huske at gøre det til en array-formel ved at trykke på tasterne Ctrl + Shift + Enter samtidig.

    Til Excel 365 og 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( celle , SEKVENS(LEN( celle 1) *1), MID( celle , SEKVENS(LEN( celle )), 1), ""))

    For at fjerne tal fra en streng i A2 er formlen f.eks:

    =TEXTJOIN(""", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT("1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), "")))

    Eller

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2), 1), 1), "")))

    Resultatet er, at alle tal fjernes fra en celle, og at teksttegn bevares:

    Som vist på skærmbilledet ovenfor fjerner formlen numeriske tegn fra enhver position i en streng: i begyndelsen, i slutningen og i midten. Der er dog et forbehold: Hvis en streng begynder med et tal efterfulgt af et mellemrum , bevares dette mellemrum, hvilket giver et problem med ledende mellemrum (som i B2).

    For at slippe af med ekstra mellemrum før tekst , indpakke formlen i TRIM-funktionen på følgende måde:

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2), 1), 1), ""))))

    Nu er dine resultater helt perfekte!

    Sådan fungerer denne formel:

    I det væsentlige fungerer formlen på samme måde som forklaret i det foregående eksempel. Forskellen er, at du fra det endelige array, der serveres til TEXTJOIN-funktionen, skal fjerne tal, ikke tekst. For at få det gjort, bruger vi kombinationen af IF- og ISERROR-funktionerne.

    Som du husker, genererer MID(...)+0 et array af tal og #VALUE! fejl, der repræsenterer teksttegn i de samme positioner:

    {2;1;0;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!;#VÆRDI!}

    Funktionen ISERROR opfanger fejlene og sender det resulterende array af boolske værdier til IF:

    {FALSK;FALSK;FALSK;FALSK;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND;SAND}

    Når IF-funktionen ser TRUE (en fejl), indsætter den det tilsvarende teksttegn i det behandlede array ved hjælp af en anden MID-funktion. Når IF-funktionen ser FALSE (et tal), erstatter den det med en tom streng:

    {"";"";"";"";" "; "S"; "u"; "n"; "s"; "e"; "t";"" "; "R"; "o"; "a"; "d"}

    Dette endelige array sendes til TEXTJOIN, så det sammenkæder teksttegnene og udsender resultatet.

    Brugerdefineret funktion til at fjerne tal fra tekst

    Løsningen fungerer for alle Excel-versioner

    Da en robust formel skal holdes enkel, vil jeg dele koden til den brugerdefinerede funktion (UDF) for at fjerne alle numeriske tegn.

    VBA-kode 1:

    Function RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    VBA-kode 2:

    Funktion RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Som det er tilfældet med RemoveText-funktionen, er det bedre at bruge den anden kode i store regneark for at optimere ydeevnen.

    Når koden er tilføjet til din projektmappe, kan du fjerne alle numeriske tegn fra en celle ved hjælp af denne brugerdefinerede funktion:

    FjernNumre(streng)

    I vores tilfælde er formlen i B2 følgende:

    =FjernTilbageNumre(A2)

    Hvis du vil beskære eventuelle ledende mellemrum, skal du indlejre den brugerdefinerede funktion i TRIM, som du ville gøre det i en formel:

    =TRIM(FjernNumre(A2))

    Opdele tal og tekst i separate kolonner

    I situationer, hvor du ønsker at adskille tekst og tal i to kolonner, ville det være rart at få jobbet gjort med en enkelt formel, er du enig? Til dette formål skal vi blot sammenføje koden for RemoveText og RemoveNumbers funktioner til én funktion, der hedder SplitTextNumbers , eller blot Split , eller hvad du vil :)

    VBA-kode 1:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Else sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End If EndFunktion

    VBA-kode 2:

    Funktion SplitTextNumbers(str As String , is_remove_text As Boolean ) As String With CreateObject ("VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else .Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Vores nye brugerdefinerede funktion kræver to argumenter:

    SplitTextNumbers(string, is_remove_text)

    Hvor is_remove_text er en boolsk værdi, der angiver, hvilke tegn der skal fjernes:

    • TRUE eller 1 - fjerner tekst og beholder tal
    • FALSK eller 0 - fjerner tal og beholder teksten

    For vores eksempeldatasæt har formlerne denne form:

    Hvis du vil fjerne ikke-numeriske tegn:

    =SplitTextNumbers(A2, TRUE)

    Sådan sletter du numeriske tegn:

    =SplitTextNumbers(A2, FALSE)

    Tip. For at undgå et potentielt problem med ledende mellemrum anbefaler jeg, at du altid indpakker formlen, der fjerner tal, i TRIM-funktionen:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Særligt værktøj til at fjerne tal eller tekst

    For dem, der ikke bryder sig om at komplicere tingene unødigt, vil jeg vise vores egen måde at fjerne tekst eller tal på i Excel.

    Hvis du antager, at vores Ultimate Suite er tilføjet til dit Excel-bånd, skal du gøre følgende:

    1. På den Ablebits Data under fanen, i fanen Tekst gruppe, klik på Fjern > Fjern tegn .

  • Vælg kildeområdet i tilføjelsesvinduet, vælg kildeområdet, vælg den Fjern tegnsæt og vælg enten Tekst tegn eller Numerisk tegn i rullelisten.
  • Hit Fjern og nyde resultatet :)
  • Tip. Hvis resultaterne indeholder nogle ledende mellemrum, vil værktøjet Trim Spaces fjerne dem på ingen tid.

    Sådan fjerner du tekst eller numeriske tegn fra en streng i Excel. Tak fordi du læste med, og jeg glæder mig til at se dig på vores blog i næste uge!

    Tilgængelige downloads

    Fjern tekst eller tal i Excel - eksempler (.xlsm-fil)

    Ultimate Suite - prøveversion (.exe-fil)

    Michael Brown er en dedikeret teknologientusiast med en passion for at forenkle komplekse processer ved hjælp af softwareværktøjer. Med mere end ti års erfaring i teknologibranchen har han finpudset sine færdigheder i Microsoft Excel og Outlook samt Google Sheets og Docs. Michaels blog er dedikeret til at dele sin viden og ekspertise med andre og giver nemme at følge tips og vejledninger til at forbedre produktiviteten og effektiviteten. Uanset om du er en erfaren professionel eller nybegynder, tilbyder Michaels blog værdifuld indsigt og praktiske råd til at få mest muligt ud af disse vigtige softwareværktøjer.