Hvordan fjerne tekst eller tall fra Excel-cellen

  • Dele Denne
Michael Brown

Denne opplæringen vil lære deg hvordan du skiller tekst fra tall i Excel ved å bruke opprinnelige formler og egendefinerte funksjoner. Du vil også lære hvordan du deler tekst og tall i to separate kolonner.

Se for deg dette: du mottar rådata for analyse og finner ut at tall blandes med tekst i én kolonne. I de fleste situasjoner vil det sikkert være mer praktisk å ha dem i separate kolonner for nærmere undersøkelse.

Hvis du jobber med homogene data, kan du sannsynligvis bruke VENSTRE, HØYRE og MIDTE-funksjonene for å trekke ut samme antall tegn fra samme posisjon. Men det er et ideelt scenario for laboratorietester. I det virkelige liv vil du mest sannsynlig forholde deg til ulik data der tall kommer før tekst, etter tekst eller mellom tekst. Eksemplene nedenfor gir løsninger nøyaktig for dette tilfellet.

    Hvordan fjerne tekst og beholde tall i Excel-celler

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

    Microsoft Excel 2019 introduserte noen få nye funksjoner som ikke er tilgjengelige i tidligere versjoner, og vi skal bruke en av slike funksjoner, nemlig TEXTJOIN, for å fjerne teksttegn fra en celle som inneholder tall.

    Den generiske formelen er:

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

    I Excel 365 og 2021 vil denne også fungere:

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

    Ved første øyekast kan formlene se litt skremmende ut, men de fungerer :)

    For å fjerne tekst fra tall i A2, skriv inn en av formlene nedenfor i B2, og kopier den ned til så mange celler som nødvendig.

    I Excel 365 - 2019:

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

    I Excel 2019 må den legges inn som en matriseformel med Ctrl + Shift + Enter . I dynamisk array Excel fungerer det som en vanlig formel fullført med Enter-tasten.

    I Excel 365 og 2021:

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

    Som resultat er alle teksttegn fjernet fra en celle og tall beholdes:

    Hvordan denne formelen fungerer:

    For å forstå logikken bedre, la oss begynne å undersøke formelen fra innsiden:

    Du bruker enten ROW(INDIRECT("1:"&LEN(streng))) eller SEQUENCE(LEN(streng)) for å lage en sekvens med tall som tilsvarer det totale antallet av tegn i kildestrengen, og mat deretter disse sekvensnumrene til MID-funksjonen som startnumrene. I B2 ser denne delen av formelen ut som følger:

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

    MID-funksjonen trekker ut hvert tegn fra A2 som begynner med det aller første og returnerer dem som en matrise:

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

    Denne matrisen multipliseres med 1. Numeriske verdier overlever uten endring, mens multiplisering av et ikke-numerisk tegn resulterer i en #VERDI! feil:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    IFERROR-funksjonen håndtererdisse feilene og erstatter dem med tomme strenger:

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

    Denne siste matrisen serveres til TEXTJOIN-funksjonen, som kobler sammen de ikke-tomme verdiene i matrisen ( ignore_empty argument satt til TRUE) med en tom streng ("") for skilletegnet:

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

    Tips. For Excel 2016 - 2007 finnes det også en løsning, men formelen er langt mer kompleks. Du finner det i denne opplæringen: Hvordan trekke ut tall i Excel.

    Egendefinert funksjon for å fjerne tekst fra tall

    Løsningen fungerer for alle Excel-versjoner

    Hvis du bruker en eldre versjon av Excel eller finner formlene ovenfor også vanskelig å huske, ingenting hindrer deg i å lage din egen funksjon med en enklere syntaks og et brukervennlig navn som for eksempel Fjern tekst . Den brukerdefinerte funksjonen (UDF) kan skrives på to måter:

    VBA-kode 1:

    Her ser vi på hvert tegn i kildestrengen en etter en og sjekk om den er numerisk eller ikke. Hvis et tall, blir tegnet lagt til den resulterende strengen.

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

    VBA-kode 2:

    Koden oppretter et objekt for å behandle et regulært uttrykk. Ved å bruke RegExp fjerner vi alle andre tegn enn sifrene 0-9 fra kildestrengen.

    Funksjon 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 kodene fungere like bra. På store regneark der funksjonen kalles hundrevis eller tusenvis av ganger, vil kode 2 som bruker VBScript.RegExp fungere raskere.

    De detaljerte trinnene for å sette inn koden i arbeidsboken din finner du her: Slik setter du inn VBA kode i Excel.

    Uansett hvilken tilnærming du velger, fra sluttbrukerperspektivet, er funksjonen for å slette tekst og legge igjen tall så enkel som denne:

    RemoveText(string)

    For eksempel til fjern ikke-numeriske tegn fra celle A2, formelen i B2 er:

    =RemoveText(A2)

    Bare kopier den nedover kolonnen, så får du dette resultatet:

    Merk. Både de opprinnelige formlene og egendefinerte funksjoner gir ut en numerisk streng . For å gjøre det om til et tall, multipliser resultatet med 1, eller legg til null, eller pakk formelen inn i VERDI-funksjonen. For eksempel:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Hvordan fjerne tall fra tekststreng i Excel

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

    Formlene for å fjerne tall fra en alfanumerisk streng ligner ganske mye på de som ble diskutert i forrige eksempel.

    For Excel 365 - 2019:

    TEXTJOIN(" ", SANN, HVIS(FEIL(MIDDEL( celle , RAD(INDIREKTE("1:"&LEN( celle ) )), 1) *1), MID( celle , ROW(INDIREKTE("1:"&LEN( celle ))), 1), ""))

    I Excel 2019, husk å gjøre det til en matriseformel ved å trykke Ctrl + Shift + Enter-tastene samtidig.

    For Excel 365 og 2021:

    TEXTJOIN("", TRUE, IF(FEIL(MID( celle , SEQUENCE(LEN( celle 1) *1), MID ( celle , SEQUENCE(LEN( celle )), 1), ""))

    For eksempel, for å fjerne tall fra en streng i A2, er formelen:

    =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), ""))

    Som resultat fjernes alle tall fra en celle og teksttegn beholdes:

    Som vist i skjermbildet ovenfor, fjerner formelen numeriske tegn fra alle posisjoner i en streng: i begynnelsen, på slutten og i midten. Det er imidlertid et forbehold: hvis en streng starter med et tall etterfulgt av et mellomrom , det mellomrommet beholdes, noe som gir et problem med innledende mellomrom (som i B2).

    For å bli kvitt ekstra mellomrom før tekst , pakk formelen inn i TRIM-funksjonen slik:

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

    Nå er resultatene dine helt perfekte!

    Slik fungerer denne formelen:

    I hovedsak fungerer formelen på samme måte som forklart i forrige eksempel. Forskjellen er at, fra den endelige matrisen til TEXTJOIN-funksjonen, må du fjerne tall, ikke tekst. For å få det gjort bruker vi kombinasjonen av IF- og ISERROR-funksjoner.

    Som du husker,MID(…)+0 genererer en rekke tall og #VERDI! feil som representerer teksttegn i samme posisjon:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    ISERROR-funksjonen fanger opp feilene og sender den resulterende matrisen med boolske verdier til IF:

    {FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}

    Når IF-funksjonen ser TRUE (en feil), setter den inn det tilsvarende teksttegnet i den behandlede matrisen ved hjelp av en annen MID-funksjon. Når HVIS-funksjonen ser FALSE (et tall), erstatter den den med en tom streng:

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

    Denne siste matrisen sendes over til TEXTJOIN, så den setter sammen teksttegnene og sender ut resultat.

    Egendefinert funksjon for å fjerne tall fra tekst

    Løsningen fungerer for alle Excel-versjoner

    Husk at en robust formel bør beholdes enkelt, jeg vil dele koden til den brukerdefinerte funksjonen (UDF) for å fjerne alle numeriske tegn.

    VBA-kode 1:

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

    VBA-kode 2:

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

    Som tilfellet er med RemoveText-funksjonen, er den andre koden bedre å brukes i storregneark for å optimalisere ytelsen.

    Når koden er lagt til arbeidsboken din, kan du fjerne alle numeriske tegn fra en celle ved å bruke denne egendefinerte funksjonen:

    RemoveNumbers(string)

    I vårt tilfelle, formel i B2 er:

    =RemoveNumbers(A2)

    For å trimme innledende mellomrom hvis noen, nest den egendefinerte funksjonen i TRIM som du ville gjort i en naturlig formel:

    =TRIM(RemoveNumbers(A2))

    Del opp tall og tekst i separate kolonner

    I situasjoner hvor du vil dele tekst og tall i to kolonner, ville det vært fint å få jobben gjort med en enkelt formel , bli enige? For dette slår vi bare sammen koden til RemoveText - og RemoveNumbers -funksjonene til én funksjon, kalt SplitTextNumbers , eller ganske enkelt Split , eller hva du vil :)

    VBA-kode 1:

    Funksjon SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 Til Len(str) sCurChar = Mid(str, i, 1) Hvis True = IsNumeric(sCurChar) Så 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 Funksjon

    VBA-kode 2:

    Funksjon SplitTextNumbers(str As String , is String Boolean Med 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

    Vår nye egendefinerte funksjon krever to argumenter:

    SplitTextNumbers(string, is_remove_text)

    Hvor er_fjerntekst er en boolsk verdi som indikerer hvilke tegn som skal fjernes:

    • TRUE eller 1 - fjern tekst og behold tall
    • FALSE eller 0 - fjern tall og behold tekst

    For eksempeldatasettet vårt har formlene denne formen:

    For å fjerne ikke-numeriske tegn:

    =SplitTextNumbers(A2, TRUE)

    For å slette numeriske tegn :

    =SplitTextNumbers(A2, FALSE)

    Tips. For å unngå et potensielt problem med innledende mellomrom, anbefaler jeg at du alltid legger inn formelen som fjerner tall i TRIM-funksjonen:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Spesialverktøy for å fjerne tall eller tekst

    For de som gjør det ikke liker å komplisere ting unødvendig, jeg skal vise vår egen måte å fjerne tekst eller tall i Excel på.

    Forutsatt at vår Ultimate Suite er lagt til Excel-båndet ditt, er dette hva du gjør:

    1. I kategorien Ablebits Data , i Tekst -gruppen, klikker du Fjern > Fjern tegn .

  • I tilleggets rute velger du kildeområdet, velger Fjern tegnsett og velger enten Tekst tegn eller Numeriske tegn i rullegardinlisten.
  • Trykk Fjern og nyt resultatet :)
  • Tips. Hvis resultatene inneholder noen innledende mellomrom, trim mellomromverktøyet vil eliminere dem på kort tid.

    Slik fjerner du tekst eller numeriske tegn fra en streng i Excel. Jeg takker for at du leser og ser frem til å se deg på bloggen vår neste uke!

    Tilgjengelige nedlastinger

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

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

    Michael Brown er en dedikert teknologientusiast med en lidenskap for å forenkle komplekse prosesser ved hjelp av programvareverktøy. Med mer enn ti års erfaring i teknologibransjen, har han forbedret ferdighetene sine i Microsoft Excel og Outlook, samt Google Sheets og Docs. Michaels blogg er dedikert til å dele sin kunnskap og ekspertise med andre, og gir enkle å følge tips og veiledninger for å forbedre produktivitet og effektivitet. Enten du er en erfaren profesjonell eller nybegynner, tilbyr Michaels blogg verdifull innsikt og praktiske råd for å få mest mulig ut av disse viktige programvareverktøyene.