Hvernig á að fjarlægja texta eða tölur úr Excel reit

  • Deildu Þessu
Michael Brown

Þessi kennsla mun kenna þér hvernig á að aðgreina texta frá tölum í Excel með því að nota innfæddar formúlur og sérsniðnar aðgerðir. Þú munt líka læra hvernig á að skipta texta og tölum í tvo aðskilda dálka.

Ímyndaðu þér þetta: þú færð hrá gögn til greiningar og kemst að því að tölum er blandað saman við texta í einum dálki. Í flestum tilfellum mun örugglega vera þægilegra að hafa þær í aðskildum dálkum til nánari skoðunar.

Ef þú ert að vinna með einsleit gögn gætirðu líklega notað LEFT, RIGHT og MID aðgerðirnar til að draga út sama fjölda stafa frá sömu stöðu. En það er tilvalin atburðarás fyrir rannsóknarstofupróf. Í raunveruleikanum er líklegast að þú takir við ólík gögn þar sem tölur koma á undan texta, á eftir texta eða á milli texta. Dæmin hér að neðan veita lausnir nákvæmlega fyrir þetta tilvik.

    Hvernig á að fjarlægja texta og geyma tölur í Excel frumum

    Lausnin virkar í Excel 365, Excel 2021 , og Excel 2019

    Microsoft Excel 2019 kynnti nokkrar nýjar aðgerðir sem ekki eru tiltækar í fyrri útgáfum og við ætlum að nota eina slíka aðgerða, nefnilega TEXTJOIN, til að fjarlægja textastafi úr reit sem inniheldur tölur.

    Almenna formúlan er:

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

    Í Excel 365 og 2021 mun þessi líka virka:

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

    Við fyrstu sýn gætu formúlurnar litið dálítið ógnvekjandi út, en þeir virka :)

    Til dæmis, til að fjarlægja texta úr tölum í A2, sláðu inn eina af formúlunum hér að neðan í B2 og afritaðu hann svo niður í eins marga reiti og þarf.

    Í Excel 365 - 2019:

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

    Í Excel 2019 verður að slá það inn sem fylkisformúlu með Ctrl + Shift + Enter . Í dynamic array Excel virkar það eins og venjuleg formúla sem lokið er með Enter takkanum.

    Í Excel 365 og 2021:

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

    Þar af leiðandi eru allir textastafir fjarlægð úr reit og tölur eru geymdar:

    Hvernig þessi formúla virkar:

    Til að skilja rökfræðina betur skulum við byrja að rannsaka formúluna innan frá:

    Þú notar annað hvort ROW(INDIRECT("1:"&LEN(streng))) eða SEQUENCE(LEN(streng)) til að búa til röð tölur sem samsvara heildartölunni af stöfum í upprunastrengnum og færðu síðan þessar raðnúmer í MID aðgerðina sem upphafsnúmer. Í B2 lítur þessi hluti formúlunnar svona út:

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

    MID fallið dregur út hvern staf úr A2 sem byrjar á þeim allra fyrsta og skilar þeim sem fylki:

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

    Þessi fylking er margfölduð með 1. Tölugildi lifa án breytinga, en margföldun á staf sem ekki er tölustafur leiðir til #VALUE! villa:

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

    IFERROR aðgerðin sér umþessar villur og skipta þeim út fyrir tóma strengi:

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

    Þetta síðasta fylki er þjónað TEXTJOIN fallinu, sem tengir saman ótóm gildin í fylkinu ( ignore_empty frumbreyta stillt á TRUE) með því að nota tóman streng ("") fyrir afmörkunina:

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

    Ábending. Fyrir Excel 2016 - 2007 er lausn líka til, en formúlan er mun flóknari. Þú getur fundið það í þessari kennslu: Hvernig á að draga út tölur í Excel.

    Sérsniðin aðgerð til að fjarlægja texta úr tölustöfum

    Lausnin virkar fyrir allar Excel útgáfur

    Ef þú ert að nota eldri útgáfu af Excel eða finnur formúlurnar hér að ofan líka erfitt að muna, ekkert kemur í veg fyrir að þú búir til þína eigin aðgerð með einfaldari setningafræði og notendavænu nafni eins og Fjarlægja texta . Notendaskilgreinda fallið (UDF) er hægt að skrifa á tvo vegu:

    VBA kóða 1:

    Hér skoðum við hvern staf í upprunastrengnum fyrir sig einn og athugaðu hvort það sé tölulegt eða ekki. Ef tala er stafnum bætt við strenginn sem myndast.

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

    VBA kóða 2:

    Kóðinn býr til hlut til að vinna úr reglulegri segð. Með því að nota RegExp fjarlægjum við alla stafi aðra en tölustafina 0-9 úr upprunastrengnum.

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

    Á litlum vinnublöðum munu báðir kóðarnir virka jafn vel. Á stórum vinnublöðum þar sem aðgerðin er kölluð hundruð eða þúsund sinnum mun kóði 2 sem notar VBScript.RegExp virka hraðar.

    Ítarleg skref til að setja kóðann inn í vinnubókina þína má finna hér: Hvernig á að setja inn VBA kóða í Excel.

    Hvaða nálgun sem þú velur, frá sjónarhóli notenda, er aðgerðin til að eyða texta og skilja eftir tölur eins einföld og þessi:

    RemoveText(string)

    Til dæmis til að fjarlægðu ekki tölustafi úr reit A2, formúlan í B2 er:

    =RemoveText(A2)

    Afritaðu hana bara niður í dálkinn og þú færð þessa niðurstöðu:

    Athugið. Bæði innfæddu formúlurnar og sérsniðin fall gefa út tölustreng . Til að breyta því í tölu skaltu margfalda niðurstöðuna með 1, bæta við núlli eða setja formúluna inn í VALUE fallið. Til dæmis:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Hvernig á að fjarlægja tölur úr textastreng í Excel

    Lausnin virkar í Excel 365, Excel 2021 og Excel 2019

    Formúlurnar til að fjarlægja tölur úr alfanumerískum streng eru nokkurn veginn svipaðar þeim sem fjallað var um í fyrra dæmi.

    Fyrir Excel 365 - 2019:

    TEXTJOIN(" ", TRUE, IF(ISERR(MID( klefi , ROW(ÓBEIN("1:"&LEN( cell ) )), 1) *1), MID( cell , ROW(INDIRECT("1:"&LEN( reit ))), 1), ""))

    Í Excel 2019, mundu að gera það að fylkisformúlu með því að ýta á Ctrl + Shift + Enter takkana saman.

    Fyrir Excel 365 og 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( cell , SEQUENCE(LEN( cell 1) *1), MID ( hólf , RÖÐ(LENG( hólf )), 1), ""))

    Til dæmis, til að fjarlægja tölur úr streng í A2 er formúlan:

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

    Eða

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

    Í kjölfarið eru allar tölur fjarlægðar úr reit og textastafir geymdir:

    Eins og sést á skjáskotinu hér að ofan, þá afhjúpar formúlan tölustafi frá hvaða stað sem er í streng: í upphafi, í lok og í miðjunni. Hins vegar er fyrirvari: ef strengur byrjar á tölu sem fylgt er eftir með bili , því bili er haldið eftir, sem veldur vandamáli með fremstu bilum (eins og í B2).

    Til að losna við auka bil á undan texta , settu formúluna inn í TRIM aðgerðina svona:

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

    Nú, árangurinn þinn er algjörlega fullkominn!

    Hvernig þessi formúla virkar:

    Í meginatriðum virkar formúlan eins og útskýrt var í fyrra dæmi. Munurinn er sá að frá endanlegu fylki sem þjónað er til TEXTJOIN aðgerðarinnar þarftu að fjarlægja tölur, ekki texta. Til að gera það notum við samsetningu IF og ISERROR aðgerða.

    Eins og þú manst,MID(…)+0 býr til fjölda af tölum og #VALUE! villur sem tákna textastafi á sömu stöðum:

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

    ISERROR aðgerðin grípur villurnar og sendir fylkið af Boolean gildum sem myndast í IF:

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

    Þegar IF aðgerðin sér TRUE (villa), setur hún samsvarandi textastaf inn í unnar fylki með hjálp annarrar MID aðgerð. Þegar IF fallið sér FALSE (tala), kemur það í stað þess fyrir tóman streng:

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

    Þessi lokafylki er færð yfir í TEXTJOIN, þannig að hún sameinar textastafina og gefur út niðurstaða.

    Sérsniðin aðgerð til að fjarlægja tölur úr texta

    Lausnin virkar fyrir allar Excel útgáfur

    Hafðu í huga að geyma ætti öfluga formúlu einfalt, ég mun deila kóða notendaskilgreindu fallsins (UDF) til að fjarlægja hvaða tölustaf sem er.

    VBA kóða 1:

    Virka RemoveNumbers(str As String ) Dim sRes As String sRes = "" Fyrir i = 1 Til Len(str) Ef False = IsNumeric(Mid(str, i, 1)) Þá sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    VBA code 2:

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

    Eins og raunin er með RemoveText fallinu er betra að nota seinni kóðann í stórvinnublöð til að hámarka frammistöðu.

    Þegar kóðanum hefur verið bætt við vinnubókina þína geturðu fjarlægt alla tölustafi úr reit með því að nota þessa sérsniðnu aðgerð:

    RemoveNumbers(streng)

    Í okkar tilviki, formúla í B2 er:

    =RemoveNumbers(A2)

    Til að klippa fremstu bil ef einhver er, hreiður sérsniðnu fallið inni í TRIM eins og þú myndir innfædda formúlu:

    =TRIM(RemoveNumbers(A2))

    Skiltu tölum og texta í aðskilda dálka

    Í þeim aðstæðum þegar þú vilt aðgreina texta og tölur í tvo dálka væri gaman að vinna verkið með einni formúlu , sammála? Fyrir þetta sameinum við bara kóðann af Fjarlægja texta og Fjarlægja tölur í eina aðgerð, sem heitir SplitTextnúmer , eða einfaldlega Klofið , eða hvað sem þér líkar :)

    VBA kóða 1:

    Aðgerð SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" Fyrir i = 1 Til Len(str) sCurChar = Mid(str, i, 1) Ef True = IsNumeric(sCurChar) Þá sNum = sNum & sCurChar Annað sText = sText & amp; sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End Fall

    VBA code 2:

    Fall SplitTextNumbers(str As String )_text As_removing Með CreateObject ("VBScript.RegExp") .Global = True If True = is_remove_text Þá .Pattern = "[^0-9]" Annað.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Nýja sérsniðna aðgerðin okkar krefst tveggja röksemda:

    SplitTextNumbers(streng, is_remove_text)

    Hvar er_fjarlægja_texti er Boolean gildi sem gefur til kynna hvaða stafi á að fjarlægja:

    • TRUE eða 1 - fjarlægðu texta og haltu tölum
    • FALSE eða 0 - fjarlægðu tölur og haltu texta

    Fyrir sýnishorn gagnasafnsins okkar eru formúlurnar á þessu formi:

    Til að fjarlægja ótalnastafi:

    =SplitTextNumbers(A2, TRUE)

    Til að eyða tölustöfum :

    =SplitTextNumbers(A2, FALSE)

    Ábending. Til að koma í veg fyrir hugsanlegt vandamál af fremstu bilum, mæli ég með því að setja alltaf formúluna sem fjarlægir tölur í TRIM fallið:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Sérstakt tól til að fjarlægja tölur eða texta

    Fyrir þá sem gera það ekki eins og að flækja hlutina að óþörfu, ég mun sýna okkar eigin leið til að fjarlægja texta eða tölur í Excel.

    Að því gefnu að Ultimate Suite okkar sé bætt við Excel borðið þitt, þá er þetta það sem þú gerir:

    1. Á flipanum Ablebits Data , í hópnum Texti , smelltu á Fjarlægja > Fjarlægja stafi .

  • Veldu upprunasviðið í viðbótinni, veldu Fjarlægja stafasett og veldu annað hvort Texti stafir eða Tölustafir stafir í fellilistanum.
  • Ýttu á Fjarlægja og njóttu niðurstöðunnar :)
  • Ábending. Ef niðurstöðurnar innihalda nokkur fremstu rými, klippa rýmintól mun útrýma þeim á skömmum tíma.

    Svona á að fjarlægja texta eða tölustafi úr streng í Excel. Ég þakka þér fyrir lesturinn og hlakka til að sjá þig á blogginu okkar í næstu viku!

    Lagt niðurhal

    Fjarlægja texta eða tölur í Excel - dæmi (.xlsm skrá)

    Ultimate Suite - prufuútgáfa (.exe skrá)

    Michael Brown er hollur tækniáhugamaður með ástríðu fyrir því að einfalda flókna ferla með hugbúnaðarverkfærum. Með meira en áratug af reynslu í tækniiðnaðinum hefur hann aukið færni sína í Microsoft Excel og Outlook, sem og Google Sheets og Docs. Blogg Michael er tileinkað því að deila þekkingu sinni og sérfræðiþekkingu með öðrum, veita auðveld ráð og leiðbeiningar til að bæta framleiðni og skilvirkni. Hvort sem þú ert vanur fagmaður eða byrjandi, þá býður blogg Michaels upp á dýrmæta innsýn og hagnýt ráð til að fá sem mest út úr þessum nauðsynlegu hugbúnaðarverkfærum.