Excel: Dragðu númer úr textastreng

  • Deildu Þessu
Michael Brown

Kennslan sýnir hvernig á að draga tölur úr ýmsum textastrengjum í Excel með því að nota formúlur og Extract tólið.

Þegar kemur að því að draga út hluta af textastreng af ákveðinni lengd , Excel býður upp á þrjár undirstrengsaðgerðir (Left, Right og Mid) til að takast á við verkefnið fljótt. Þegar kemur að því að draga tölur úr alfanumerískum streng veitir Microsoft Excel... ekkert.

Til að fá tölu úr streng í Excel þarf smá hugvit, smá þolinmæði og fullt af mismunandi aðgerðum hreiður inn í hvort annað. Eða þú getur keyrt Extract tólið og látið vinna verkið með músarsmelli. Hér að neðan finnurðu allar upplýsingar um báðar aðferðirnar.

    Hvernig á að draga tölu úr enda textastrengs

    Þegar þú ert með dálk með alfanumerískum strengjum þar sem tala kemur á eftir texta, þú getur notað eftirfarandi formúlu til að fá það.

    RIGHT( cell, LEN( cell) - MAX(IF(ISNUMBER(MID( cell)>, ROW(INDIRECT("1:"&LEN( cell))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN( cell))), 0)))

    Við munum dvelja við rökfræði formúlunnar aðeins síðar. Í bili skaltu einfaldlega skipta út hólfi með tilvísun í reitinn sem inniheldur upprunalega strenginn (A2 í okkar tilfelli), og sláðu inn formúluna í hvaða tóma reit sem er í sömu röð, segðu í B2:

    =RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))

    Þessi formúla fær aðeins tölu frá endanum. Ef strengur hefur líka tölur í upphafi eða miðju, þá eru þær þaðhunsuð:

    Útdrátturinn er framkvæmdur með RIGHT fallinu sem tilheyrir flokki Textaaðgerða. Úttak þessarar falls er alltaf texti . Í okkar tilviki er útkoman tölulegur undirstrengur , sem í Excel er líka texti, ekki tala.

    Ef þú þarft að niðurstaðan sé tala (sem þú getur notað í frekari útreikningum), settu formúluna síðan inn í VALUE fallið eða framkvæmdu reikniaðgerð sem breytir ekki niðurstöðunni, td margfaldaðu með 1 eða bættu við 0. Til að fanga villur í strengjum sem innihalda ekki ein tala, notaðu IFERROR fallið. Til dæmis:

    =IFERROR(VALUE(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))), "")

    eða

    =IFERROR(RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))) +0, "")

    Athugið. Í Dynamic Array Excel (Office 365 og 2021) slærðu inn formúluna á venjulegan hátt með Enter takkanum. Í Excel 2019 og eldri virkar það aðeins sem fylkisformúla, svo mundu að ýta á Ctrl + Shift + Enter til að klára hana.

    Hvernig þessi formúla virkar:

    Til að draga númer úr alfanumerískum streng er það fyrsta sem þú þarft að vita hvar á að byrja útdráttinn. Staða síðasta ótalnastafs í streng er ákvörðuð með hjálp þessarar erfiðu formúlu:

    MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN( A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))

    Til að skilja rökfræðina skulum við rannsaka hana innan frá :

    ROW(INDIRECT("1:"&LEN(A2))) samsetninginbýr til röð talna sem samsvarar heildarfjölda stafa í upprunastrengnum (A2), og við þjónum þessum raðnúmerum í MID sem upphafstölur:

    MID(A2, {1;2;3;4 ;5;6;7;8}, 1)

    MID fallið dregur hvern einstakan staf úr A2 og skilar þeim sem fylki:

    {"0";"5";" -";"E";"C";"-";"0";"1"}

    Þar sem MID er textafall er úttak hennar alltaf texti (eins og þú sérð, allir stafir eru innan gæsalappa). Til að breyta tölunum í tölur, margföldum við fylkið með 1 (tvöföld neitun --MID() mun hafa sömu áhrif). Niðurstaðan af þessari aðgerð er fylki af tölum og #GILDIM! villur sem tákna ekki tölustafi:

    ISNUMBER({0;5;#VALUE!;#VALUE!;#VALUE!;#VALUE!;0;1})

    ISNUMBER fallið metur hverja einingu fylkisins og gefur niðurstöðu sína í formi Boolean gildi - TRUE fyrir tölur, FALSE fyrir allt annað:

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

    Þetta fylki fer í rökrétt próf á IF fallinu, þar sem hver þáttur fylkisins er borinn saman við FALSE:

    IF({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE ;TRUE}=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)

    Fyrir hvert FALSE (ekki tölulegt gildi) skilar annað ROW(INDIRECT()) fall. hlutfallslega stöðu sína í strengnum. Fyrir hvert TRUE (tölugildi) er núll skilað. Fylki sem myndast lítur út eins ogeftirfarandi:

    {0;0;3;4;5;6;0;0}

    Restin er auðveld. MAX fallið finnur hæstu töluna í fylkinu hér að ofan, sem er staðsetning síðasta ótalna gildisins í strengnum (6 í okkar tilfelli). Dragðu einfaldlega þá stöðu frá heildarlengd strengsins sem LEN skilar og sendu niðurstöðuna til HÆGRI til að láta hana vita hversu marga stafi á að draga úr hægri hlið strengsins:

    RIGHT(A2, LEN (A2) - 6)

    Lokið!

    Hvernig á að draga út númer úr upphafi textastrengs

    Ef þú ert að vinna með færslur þar sem texti birtist á eftir tölu, geturðu dragðu út númer úr byrjun strengs með því að nota þessa almennu formúlu:

    LEFT( cell, MATCH(FALSE, ISNUMBER(MID( cell, ROW(INDIRECT("1: "&LEN( hólf)+1)), 1) *1), 0) -1)

    Með upprunalega strengnum í A2, notaðu eftirfarandi formúlu til að fá tölu:

    =LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1)

    Sama hversu margir tölustafir eru í miðjunni eða á endanum er aðeins upphafsnúmerið dregið út:

    Athugið. Í Excel 365 og Excel 2021, vegna stuðnings við kraftmikla fylki, virkar venjuleg formúla fínt. Í Excel 2019 og eldri, ættir þú að ýta á Ctrl + Shift + Enter til að gera það beinlínis að fylkisformúlu .

    Hvernig þessi formúla virkar:

    Hér notum við aftur samsetningu ROW, INDIRECT og LEN falla til að búa til talnaröð sem jafngildir heildarfjölda stafa í upprunastrengnum plús 1 (hlutverk þessviðbótarstafur mun skýrast aðeins seinna).

    ROW(INDIRECT("1:"&LEN(A2)+1))

    MID og ISNUMBER gera sama starf og í fyrra dæmi - MID dregur einstaka stafi og ISNUMBER breytir þeim í rökrétt gildi. Fylki TRUE og FALSE fer í MATCH fallið sem uppflettifylki:

    MATCH(FALSE, {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE}, 0)

    MATCH reiknar hlutfallslega stöðu fyrsta FALSE, gefur okkur staðsetningu fyrsta ótalnastafsins í strengnum (3 í A2). Til að draga út undanfarandi tölur drögum við 1 frá stöðu fyrsta textastafsins og þjónum mismuninum á tal_stafir rök VINSTRI fallsins:

    LEFT(A2, 3-1)

    Nú, aftur í „auka“ staf í röðinni sem myndast af ROW(INDIRECT()+1)). Eins og þú veist nú þegar gefur þessi röð upphafspunkta fyrir MID aðgerðina. Án +1 myndi MID draga út nákvæmlega eins marga stafi og þeir eru í upprunalega strengnum. Ef strengurinn inniheldur aðeins tölur mun ISNUMBER aðeins skila TRUE á meðan MATCH þarf að minnsta kosti eitt FALSE. Til að tryggja það, bætum við einum staf í viðbót við heildarlengd strengsins, sem MID fallið myndi breyta í tóman streng. Til dæmis, í B7, skilar MID þessari fylki:

    {"1";"2";"3";"4";""}

    Athugið. Eins og raunin er með RIGHT fallið, þá skilar LEFT einnig töluundirstreng , sem er tæknilega séð texti, ekki númer. Til að fá niðurstöðuna sem tölu frekar en talnastreng, hreiður formúluna í VALUE fallinu eða margfaldar niðurstöðuna með 1 eins og sýnt er í fyrsta dæminu.

    Hvernig á að fá tölu úr hvaða stöðu sem er í streng

    Ef verkefnið þitt felur í sér að draga út númer hvaðan sem er í streng, geturðu notað eftirfarandi furðulega formúlu sem birt var á MrExcel spjallborðinu:

    =SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1)) * ROW(INDIRECT("1:"&LEN(A2))), 0), ROW(INDIRECT("1:"&LEN(A2))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A2)))/10)

    Þar sem A2 er upprunalega textastrengur.

    Að sundurliða þessa formúlu þyrfti sérstaka grein, svo þú getur einfaldlega afritað hana á vinnublaðið þitt til að ganga úr skugga um að það virki í alvöru :)

    Þegar þú skoðar niðurstöðurnar gætirðu hins vegar tekið eftir einum óverulegum galla - ef upprunastrengurinn inniheldur ekki tölu skilar formúlan núlli, eins og í röð 6 í skjámyndinni hér að ofan. Til að laga þetta geturðu sett formúluna inn í IF yfirlýsinguna, rökrétta prófið sem athugar hvort upprunastrengurinn inniheldur einhverja tölu. Ef það gerist, dregur formúlan út töluna, annars skilar tómum streng:

    =IF(SUM(LEN(A2)-LEN(SUBSTITUTE(A2, {"0","1","2","3","4","5","6","7","8","9"}, "")))>0, SUMPRODUCT(MID(0&A2, LARGE(INDEX(ISNUMBER(--MID(A2,ROW(INDIRECT("$1:$"&LEN(A2))),1))* ROW(INDIRECT("$1:$"&LEN(A2))),0), ROW(INDIRECT("$1:$"&LEN(A2))))+1,1) * 10^ROW(INDIRECT("$1:$"&LEN(A2)))/10),"")

    Eins og sést á skjámyndinni hér að neðan, þá virkar endurbætt formúla fallega (hrós til Alex, Excel sérfræðingur okkar, fyrir þessa framför):

    Ólíkt öllum fyrri dæmum er útkoman af þessari formúlu tala . Til að ganga úr skugga um þetta, taktu bara eftir hægri stilltu gildunum í dálki B og styttum upphafsnúllum.

    Ábending. Í Excel 365 -Excel 2019, það er miklu einfaldari lausn með hjálp TEXTJOIN aðgerðarinnar. Vinsamlegast sjáðu Hvernig á að fjarlægja texta og geyma tölur.

    Taktu númer úr textastreng með Ultimate Suite

    Eins og þú hefur nýlega séð, þá er engin léttvæg Excel formúla til að draga tölu úr textastreng. Ef þú átt í erfiðleikum með að skilja formúlurnar eða fínstilla þær fyrir gagnasöfnin þín gætirðu líkað við þessa einföldu leið til að fá tölu úr streng í Excel.

    Með Ultimate Suite okkar bætt við Excel borðið þitt, er þetta hvernig þú getur fljótt sótt númer úr hvaða alfanumerísku streng sem er:

    1. Farðu í flipann Ablebits Data > Text hópnum og smelltu á Extract :

    2. Veldu allar frumur með upprunastrengjunum.
    3. Á glugganum Útdráttarverkfærið skaltu velja Dregið út tölur valhnappinn.
    4. Það fer eftir því hvort þú vilt að niðurstöðurnar séu formúlur eða gildi, veldu Setja inn sem formúla reitinn eða láttu hann vera óvalinn (sjálfgefið).

      Mitt ráð er að velja þennan reit ef þú vilt að útdráttarnúmerin uppfærist sjálfkrafa um leið og einhverjar breytingar eru gerðar á upprunastrengnum. Ef þú vilt að niðurstöðurnar séu óháðar upprunalegu strengjunum (t.d. ef þú ætlar að fjarlægja upprunagögnin síðar), skaltu ekki velja þennan reit.

    5. Smelltu á hnappinn Setja inn niðurstöður . Búið!

    Eins og í fyrra dæminu, niðurstöðurútdráttur eru tölur , sem þýðir að þér er frjálst að telja, leggja saman, meðaltal eða framkvæma aðra útreikninga með þeim.

    Í þessu dæmi höfum við valið að setja niðurstöðurnar inn sem gildi , og viðbótin gerði nákvæmlega það sem beðið var um:

    Ef Setja inn sem formúla gátreiturinn var valinn, d athugaðu formúlu í formúlustikunni. Forvitinn að vita hvern? Hladdu bara niður prufuútgáfu Ultimate Suite og sjáðu sjálfur :)

    Lagt niðurhal

    Excel Extract Number - sýnishorn vinnubók (.xlsx 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.