Hoe om teks of syfers uit Excel-sel te verwyder

  • Deel Dit
Michael Brown

Hierdie tutoriaal sal jou leer hoe om teks van getalle in Excel te skei deur inheemse formules en pasgemaakte funksies te gebruik. Jy sal ook leer hoe om teks en getalle in twee aparte kolomme te verdeel.

Stel jou dit voor: jy ontvang rou data vir ontleding en vind uit dat getalle in een kolom met teks gemeng word. In die meeste situasies sal dit beslis geriefliker wees om hulle in aparte kolomme te hê vir nader ondersoek.

In die geval dat jy met homogene data werk, kan jy waarskynlik die LINKS-, REGS- en MID-funksies gebruik om die dieselfde aantal karakters van dieselfde posisie. Maar dit is 'n ideale scenario vir laboratoriumtoetse. In die werklike lewe sal jy heel waarskynlik te doen kry met verskillende data waar getalle voor teks, na teks of tussen teks kom. Die onderstaande voorbeelde verskaf oplossings presies vir hierdie geval.

    Hoe om teks te verwyder en nommers in Excel-selle te hou

    Die oplossing werk in Excel 365, Excel 2021 , en Excel 2019

    Microsoft Excel 2019 het 'n paar nuwe funksies bekendgestel wat nie in vroeër weergawes beskikbaar is nie, en ons gaan een van sulke funksies, naamlik TEXTJOIN, gebruik om tekskarakters uit 'n sel te stroop wat nommers bevat.

    Die generiese formule is:

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

    In Excel 365 en 2021 sal hierdie een ook werk:

    TEXTJOIN("", TRUE,IFERROR(MID( sel, VOLGORDE(LEN( sel)), 1) *1, ""))

    Met die eerste oogopslag kan die formules 'n bietjie intimiderend lyk, maar hulle werk wel :)

    Om byvoorbeeld teks uit getalle in A2 te verwyder, voer een van die onderstaande formules in B2 in, en kopieer dit dan na soveel selle as wat nodig is.

    In Excel 365 - 2019:

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

    In Excel 2019 moet dit as 'n skikkingsformule ingevoer word met Ctrl + Shift + Enter. In dinamiese skikking Excel werk dit as 'n normale formule voltooi met die Enter-sleutel.

    In Excel 365 en 2021:

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

    As gevolg hiervan is alle tekskarakters verwyder uit 'n sel en getalle word gehou:

    Hoe hierdie formule werk:

    Om die logika beter te verstaan, kom ons begin ondersoek instel die formule van binne:

    Jy gebruik óf ROW(INDIRECT("1:"&LEN(string))) of SEQUENCE(LEN(string)) om 'n ry te skep 'n getalle wat ooreenstem met die totale getal van karakters in die bronstring, en voer dan daardie opeenvolgende nommers na die MID-funksie as die beginnommers. In B2 lyk hierdie deel van die formule soos volg:

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

    Die MID-funksie onttrek elke karakter van A2 wat met die heel eerste een begin en gee dit terug as 'n skikking:

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

    Hierdie skikking word vermenigvuldig met 1. Numeriese waardes oorleef sonder verandering, terwyl die vermenigvuldiging van 'n nie-numeriese karakter 'n #VALUE! fout:

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

    Die IFERROR-funksie hanteerhierdie foute en vervang hulle met leë stringe:

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

    Hierdie finale skikking word bedien aan die TEXTJOIN-funksie, wat die nie-leë waardes in die skikking aaneenskakel ( ignore_empty argument op WAAR gestel) met 'n leë string ("") vir die skeidingsteken:

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

    Wenk. Vir Excel 2016 - 2007 bestaan ​​daar ook 'n oplossing, maar die formule is baie meer kompleks. Jy kan dit vind in hierdie handleiding: Hoe om getalle in Excel te onttrek.

    Gepasmaakte funksie om teks uit getalle te verwyder

    Die oplossing werk vir alle Excel-weergawes

    As jy 'n ouer weergawe van Excel gebruik of die bogenoemde formules ook vind moeilik om te onthou, niks verhoed jou om jou eie funksie te skep met 'n eenvoudiger sintaksis en 'n gebruikersvriendelike naam soos VerwyderTeks . Die gebruikergedefinieerde funksie (UDF) kan op twee maniere geskryf word:

    VBA-kode 1:

    Hier kyk ons ​​na elke karakter in die bronstring een vir een en kyk of dit numeries is of nie. As 'n getal, word die karakter by die resulterende string gevoeg.

    Funksie RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i) , 1)) Dan sRes = sRes & amp; Mid(str, i, 1) End If Next i RemoveText = sRes End Funksie

    VBA-kode 2:

    Die kode skep 'n objek om 'n gereelde uitdrukking te verwerk. Deur RegExp te gebruik, verwyder ons alle karakters behalwe syfers 0-9 uit die bronstring.

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

    Op klein werkkaarte sal beide kodes ewe goed presteer. Op groot werkblaaie waar die funksie honderde of duisende kere genoem word, sal kode 2 wat VBScript gebruik.RegExp vinniger werk.

    Die gedetailleerde stappe om die kode in jou werkboek in te voeg, kan hier gevind word: Hoe om VBA in te voeg kode in Excel.

    Watter benadering jy ook al kies, vanuit die eindgebruikerperspektief, is die funksie om teks uit te vee en nommers te laat so eenvoudig soos hierdie:

    VerwyderTeks(string)

    Byvoorbeeld, om verwyder nie-numeriese karakters uit sel A2, die formule in B2 is:

    =RemoveText(A2)

    Kopieer dit net in die kolom af, en jy sal hierdie resultaat kry:

    Let wel. Beide die inheemse formules en pasgemaakte funksie voer 'n numeriese string uit. Om dit in 'n getal te verander, vermenigvuldig die resultaat met 1, of tel nul by, of draai die formule in die VALUE-funksie. Byvoorbeeld:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Hoe om getalle uit teksstring in Excel te verwyder

    Die oplossing werk in Excel 365, Excel 2021 en Excel 2019

    Die formules om getalle van 'n alfanumeriese string te verwyder is redelik soortgelyk aan dié wat in die vorige voorbeeld bespreek is.

    Vir Excel 365 - 2019:

    TEXTJOIN(" ", TRUE, IF(ISERR(MID( sel , ROW(INDIREK("1:"&LEN( sel ) )), 1) *1), MID( sel , ROW(INDIREKTE("1:"&LEN( sel ))), 1), ""))

    In Excel 2019, onthou om dit 'n skikkingformule te maak deur die Ctrl + Shift + Enter-sleutels saam te druk.

    Vir Excel 365 en 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( sel , SEQUENCE(LEN( sel 1) *1), MID ( sel , VOLGORDE(LEN( sel )), 1), ""))

    Om byvoorbeeld getalle van 'n string in A2 te stroop, is die formule:

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

    Of

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

    As gevolg hiervan word alle nommers uit 'n sel verwyder en tekskarakters word behou:

    Soos getoon in die skermkiekie hierbo, stroop die formule numeriese karakters van enige posisie in 'n string: aan die begin, aan die einde en in die middel. Daar is egter 'n voorbehoud: as 'n string begin met 'n getal gevolg deur 'n spasie , daardie spasie word behou, wat 'n probleem veroorsaak van voorste spasies (soos in B2).

    Om ontslae te raak van ekstra spasies voor teks , draai die formule so in die TRIM-funksie:

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

    Nou, jou resultate is absoluut perfek!

    Hoe hierdie formule werk:

    In wese werk die formule dieselfde as wat in die vorige voorbeeld verduidelik is. Die verskil is dat, vanaf die finale skikking wat bedien word na die TEXTJOIN-funksie, jy nommers moet verwyder, nie teks nie. Om dit te laat doen, gebruik ons ​​die kombinasie van IF- en IERROR-funksies.

    Soos jy onthou,MID(...)+0 genereer 'n skikking van getalle en #WAARDE! foute wat tekskarakters in dieselfde posisies verteenwoordig:

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

    Die ISERROR-funksie vang die foute op en gee die resulterende skikking van Boole-waardes deur na IF:

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

    Wanneer die IF-funksie TRUE ('n fout) sien, voeg dit die ooreenstemmende tekskarakter in die verwerkte skikking in met behulp van 'n ander MID-funksie. Wanneer die IF-funksie ONWAAR ('n nommer) sien, vervang dit dit met 'n leë string:

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

    Hierdie finale skikking word oorgedra na TEXTJOIN, so dit koppel die tekskarakters aaneen en voer die resultaat.

    Gepasmaakte funksie om getalle uit teks te verwyder

    Die oplossing werk vir alle Excel-weergawes

    Hou in gedagte dat 'n robuuste formule gehou moet word eenvoudig, ek sal die kode van die gebruikergedefinieerde funksie (UDF) deel om enige numeriese karakter af te stroop.

    VBA-kode 1:

    Funksie RemoveNumbers(str As String ) Dim sRes As String sRes = "" Vir i = 1 To Len(str) As False = IsNumeric(Mid(str, i, 1)) Dan sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Funksie

    VBA-kode 2:

    Funksie RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) Eindig Met Eindfunksie

    Soos die geval is met die VerwyderTeks-funksie, is die tweede kode beter om gebruik te word in grootwerkblaaie om die werkverrigting te optimaliseer.

    Sodra die kode by jou werkboek gevoeg is, kan jy alle numeriese karakters uit 'n sel verwyder deur hierdie pasgemaakte funksie te gebruik:

    RemoveNumbers(string)

    In ons geval, die formule in B2 is:

    =RemoveNumbers(A2)

    Om voorste spasies te snoei indien enige, nes die pasgemaakte funksie binne TRIM soos jy 'n oorspronklike formule sou:

    =TRIM(RemoveNumbers(A2))

    Verdeel getalle en teks in aparte kolomme

    In situasies wanneer jy teks en getalle in twee kolomme wil skei, sal dit lekker wees om die werk met 'n enkele formule te laat doen , stem saam? Hiervoor voeg ons net die kode van die VerwyderTeks - en VerwyderGetal -funksies saam in een funksie, genaamd VerdeelTeksnommers , of eenvoudig Verdeel , of waarvan jy ook al hou :)

    VBA-kode 1:

    Funksie SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" Vir i = 1 To Len(str) sCurChar = Mid(str, i, 1) As True = IsNumeric(sCurChar) Dan sNum = sNum & sCurChar Else sText = sTeks & amp; sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End Funksie

    VBA-kode 2:

    Funksie SplitTextNumbers(str As String )_text Asremoving Met CreateObject ( "VBScript.RegExp") .Global = Waar As Waar = is_remove_text Dan .Pattern = "[^0-9]" Anders.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "") Eindig Met End Funksie

    Ons nuwe pasgemaakte funksie vereis twee argumente:

    SplitTextNumbers(string, is_remove_text)

    Waar is_verwyder_teks is 'n Boole-waarde wat aandui watter karakters om te stroop:

    • WAAR of 1 - verwyder teks en hou nommers
    • ONWAAR of 0 - verwyder nommers en hou teks

    Vir ons voorbeelddatastel neem die formules hierdie vorm aan:

    Om nie-numeriese karakters te verwyder:

    =SplitTextNumbers(A2, TRUE)

    Om numeriese karakters te skrap :

    =SplitTextNumbers(A2, FALSE)

    Wenk. Om 'n potensiële probleem van voorste spasies te vermy, beveel ek aan om altyd die formule wat getalle verwyder in die TRIM-funksie toe te draai:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Spesiale hulpmiddel om getalle of teks te verwyder

    Vir diegene wat dit doen nie daarvan hou om dinge onnodig te kompliseer nie, sal ek ons ​​eie manier wys om teks of syfers in Excel te verwyder.

    As ons aanvaar dat ons Ultimate Suite by jou Excel-lint gevoeg is, is dit wat jy doen:

    1. Op die Ablebits Data -oortjie, in die Teks -groep, klik Verwyder > Verwyder karakters .

  • Op die byvoeging se paneel, kies die bronreeks, kies die Verwyder karakterstelle opsie, en kies óf Teks karakters of Numeriese karakters in die aftreklys.
  • Tik Verwyder en geniet die resultaat :)
  • Wenk. As die resultate 'n paar voorste spasies bevat, die Trim Spacesinstrument sal hulle in 'n japtrap uitskakel.

    Dit is hoe om teks of numeriese karakters uit 'n string in Excel te verwyder. Ek bedank jou vir die lees en sien uit daarna om jou volgende week op ons blog te sien!

    Beskikbare aflaaie

    Verwyder teks of nommers in Excel - voorbeelde (.xlsm-lêer)

    Ultimate Suite - proefweergawe (.exe-lêer)

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.