Excel: Echdynnu rhif o'r llinyn testun

  • Rhannu Hwn
Michael Brown

Mae'r tiwtorial yn dangos sut i echdynnu rhif o wahanol linynnau testun yn Excel drwy ddefnyddio fformiwlâu a'r offeryn Echdynnu.

Pan ddaw i echdynnu rhan o linyn testun o hyd penodol , Mae Excel yn darparu tair swyddogaeth Substring (Chwith, De a Chanolbarth) i drin y dasg yn gyflym. O ran tynnu rhifau o linyn alffaniwmerig, mae Microsoft Excel yn darparu… dim byd.

I gael rhif o linyn yn Excel, mae'n cymryd ychydig o ddyfeisgarwch, ychydig o amynedd, a llawer o swyddogaethau gwahanol nythu i'w gilydd. Neu, gallwch redeg yr offeryn Detholiad a gwneud y gwaith gyda chlicio llygoden. Isod fe welwch fanylion llawn y ddau ddull.

    Sut i echdynnu rhif o'r llinyn diwedd testun

    Pan mae gennych golofn o linynnau alffaniwmerig lle daw rhif ar ôl testun, gallwch ddefnyddio'r fformiwla ganlynol i'w gael.

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

    Byddwn yn canolbwyntio ar resymeg y fformiwla ychydig yn ddiweddarach. Am y tro, disodli cell gyda chyfeiriad at y gell sy'n cynnwys y llinyn gwreiddiol (A2 yn ein hachos ni), a nodwch y fformiwla mewn unrhyw gell wag yn yr un rhes, dywedwch yn B2:

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

    Mae'r fformiwla hon yn cael rhif o'r diwedd yn unig. Os oes gan linyn rifau yn y dechrau neu'r canol hefyd, maen nhwanwybyddu:

    Mae'r echdyniad yn cael ei berfformio gyda'r ffwythiant DDE sy'n perthyn i gategori ffwythiannau Testun. Allbwn y ffwythiant hwn yw testun bob amser. Yn ein hachos ni, y canlyniad yw is-linyn rhifol , sydd yn nhermau Excel hefyd yn destun, nid yn rhif.

    Os oes angen i'r canlyniad fod yn rhif (y gallwch ei ddefnyddio mewn cyfrifiadau pellach), yna lapiwch y fformiwla i'r ffwythiant VALUE neu gwnewch weithrediad rhifyddol nad yw'n newid y canlyniad, dyweder, lluoswch ag 1 neu ychwanegu 0. I ddal gwallau yn y llinynnau nad ydynt yn cynnwys a rhif sengl, defnyddiwch y swyddogaeth IFERROR. Er enghraifft:

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

    neu

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

    Nodyn. Yn Dynamic Array Excel (Office 365 a 2021), rydych chi'n nodi'r fformiwla yn y ffordd arferol gyda'r allwedd Enter. Yn Excel 2019 ac yn gynharach, dim ond fel fformiwla arae y mae'n gweithio, felly cofiwch wasgu Ctrl + Shift + Enter i'w chwblhau.

    Sut mae'r fformiwla hon yn gweithio:

    I dynnu rhif o linyn alffaniwmerig, y peth cyntaf y mae angen i chi ei wybod yw ble i ddechrau'r echdynnu. Mae lleoliad y nod di-rhifol olaf mewn llinyn yn cael ei bennu gyda chymorth y fformiwla anodd hon:

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

    I ddeall y rhesymeg, gadewch i ni ymchwilio iddi o'r tu mewn :

    Cyfuniad ROW(INDIRECT("1:"&LEN(A2)))yn creu dilyniant o rifau sy'n cyfateb i gyfanswm y nodau yn y llinyn ffynhonnell (A2), ac rydym yn gwasanaethu'r rhifau dilyniannol hyn i MID fel y rhifau cychwyn:

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

    Mae'r ffwythiant MID yn tynnu pob nod unigol o A2 ac yn eu dychwelyd fel arae:

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

    Gan mai swyddogaeth testun yw MID, mae ei allbwn bob amser yn destun (fel y gallwch sylwi, mae'r holl nodau wedi'u hamgáu mewn dyfynodau). I droi rhai rhifol yn rhifau, rydym yn lluosi'r arae ag 1 (negydd dwbl --MID() yn cael yr un effaith). Canlyniad y llawdriniaeth hon yw amrywiaeth o rifau a #VALUE! gwallau yn cynrychioli nodau di-rhifol:

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

    Y ffwythiant ISNUMBER yn gwerthuso pob elfen o'r arae ac yn rhoi ei farn ar ffurf gwerthoedd Boole - CYWIR am rifau, GAU am unrhyw beth arall:

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

    Mae'r arae hon yn mynd i brawf rhesymegol y ffwythiant IF, lle mae pob elfen o'r arae yn cael ei chymharu ag ANGHYWIR:

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

    Ar gyfer pob GAU (gwerth di-rhifol), mae ffwythiant ROW(INDIRECT()) arall yn dychwelyd ei safle cymharol yn y llinyn. Ar gyfer pob GWIR (gwerth rhifol), dychwelir sero. Mae'r arae canlyniadol yn edrych fela ganlyn:

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

    Mae'r gweddill yn hawdd. Mae'r ffwythiant MAX yn dod o hyd i'r nifer uchaf yn yr arae uchod, sef lleoliad y gwerth di-rhifol olaf yn y llinyn (6 yn ein hachos ni). Yn syml, tynnwch y safle hwnnw o gyfanswm hyd y llinyn a ddychwelwyd gan LEN, a phasiwch y canlyniad i'r DDE i roi gwybod iddo faint o nodau i'w tynnu o ochr dde'r llinyn:

    RIGHT(A2, LEN (A2) - 6)

    Gwneud!

    Sut i echdynnu rhif o ddechrau llinyn y testun

    Os ydych yn gweithio gyda chofnodion lle mae testun yn ymddangos ar ôl rhif, gallwch echdynnu rhif o ddechrau llinyn gan ddefnyddio'r fformiwla generig hon:

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

    Gyda'r llinyn gwreiddiol yn A2, defnyddiwch y fformiwla ganlynol i gael rhif:

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

    Ni waeth faint o ddigidau sydd yn y canol neu'r diwedd, dim ond y rhif cychwyn sy'n cael ei dynnu:

    Nodyn. Yn Excel 365 ac Excel 2021, oherwydd cefnogaeth ar gyfer araeau deinamig, mae fformiwla reolaidd yn gweithio'n iawn. Yn Excel 2019 ac yn gynharach, dylech bwyso Ctrl + Shift + Enter i'w wneud yn benodol yn fformiwla arae .

    Sut mae'r fformiwla hon yn gweithio:

    Yma, rydym eto'n defnyddio'r cyfuniad o ffwythiannau ROW, INDIRECT a LEN i greu dilyniant o rifau sy'n hafal i gyfanswm y nodau yn y llinyn ffynhonnell plws 1 (rôl hynnybydd nod ychwanegol yn dod yn glir ychydig yn ddiweddarach).

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

    Mae CANOLBARTH ac ISNUMBER yn gwneud yr un gwaith ag yn y enghraifft flaenorol - mae MID yn tynnu nodau unigol ac mae ISNUMBER yn eu trosi i'r gwerthoedd rhesymegol. Mae'r casgliad canlyniadol o TRUE's a ANGHYWIR yn mynd i'r ffwythiant MATCH fel arae chwilio:

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

    Mae MATCH yn cyfrifo safle cymharol yr ANGHYWIR cyntaf, gan roi safle'r nod anrhifwm cyntaf yn y llinyn (3 yn A2). I echdynnu'r rhifau blaenorol, rydym yn tynnu 1 o safle nod y testun cyntaf ac yn gwasanaethu'r gwahaniaeth i ddadl num_chars y ffwythiant CHWITH:

    LEFT(A2, 3-1)<3

    Nawr, yn ôl i nod "ychwanegol" yn y dilyniant a gynhyrchir gan ROW(INDIRECT()+1)). Fel y gwyddoch eisoes, mae'r dilyniant hwn yn darparu'r mannau cychwyn ar gyfer y swyddogaeth MID. Heb +1, byddai MID yn tynnu cymaint yn union o nodau ag sydd yn y llinyn gwreiddiol. Os yw'r llinyn yn cynnwys rhifau yn unig, bydd ISNUMBER yn dychwelyd TRUE's yn unig tra bod MATCH angen o leiaf un ANGHYWIR. Er mwyn sicrhau hynny, rydym yn ychwanegu un nod arall at gyfanswm hyd y llinyn, y byddai'r swyddogaeth MID yn ei drawsnewid yn llinyn gwag. Er enghraifft, yn B7, mae MID yn dychwelyd yr arae hon:

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

    Nodyn. Yn yr un modd â'r swyddogaeth CYRCH, mae CHWITH hefyd yn dychwelyd rhif is-linyn , sef testun yn dechnegol, nid rhif. I gael y canlyniad fel rhif yn hytrach na llinyn rhifol, nythwch y fformiwla yn y ffwythiant VALUE neu lluoswch y canlyniad ag 1 fel y dangosir yn yr enghraifft gyntaf.

    Sut i gael rhif o unrhyw safle mewn llinyn

    Os yw'ch tasg yn awgrymu echdynnu rhif o unrhyw le mewn llinyn, gallwch ddefnyddio'r fformiwla syfrdanol ganlynol a gyhoeddwyd ar fforwm MrExcel:

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

    Ble mae A2 y llinyn testun gwreiddiol.

    Byddai dadansoddi'r fformiwla hon yn gofyn am erthygl ar wahân, felly gallwch ei chopïo i'ch taflen waith i wneud yn siŵr ei bod yn gweithio mewn gwirionedd :)

    0> Ar ôl archwilio'r canlyniadau, fodd bynnag, efallai y byddwch yn sylwi ar un anfantais ddi-nod - os nad yw'r llinyn ffynhonnell yn cynnwys rhif, mae'r fformiwla yn dychwelyd sero, fel yn rhes 6 yn y sgrinlun uchod. I drwsio hyn, gallwch lapio'r fformiwla yn y datganiad IF, y mae'r prawf rhesymegol ohono yn gwirio a yw'r llinyn ffynhonnell yn cynnwys unrhyw rif. Os ydyw, mae'r fformiwla'n tynnu'r rhif, fel arall yn dychwelyd llinyn gwag:

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

    Fel y dangosir yn y sgrinlun isod, mae'r fformiwla well yn gweithio'n hyfryd (Llongyfarchiadau i Alex, ein guru Excel, ar gyfer y gwelliant hwn):

    Yn wahanol i bob enghraifft flaenorol, canlyniad y fformiwla hon yw rhif . I wneud yn siŵr o hyn, sylwch ar y gwerthoedd sydd wedi'u halinio i'r dde yng ngholofn B a'r sero blaen cwtogi.

    Awgrym. Yn Excel 365 -Excel 2019, mae yna ateb llawer symlach gyda chymorth swyddogaeth TEXTJOIN. Gweler Sut i dynnu testun a chadw rhifau.

    Tynnwch rif o'r llinyn testun gyda Ultimate Suite

    Fel yr ydych newydd weld, nid oes fformiwla Excel ddibwys i dynnu rhif o linyn testun. Os ydych chi'n cael trafferth deall y fformiwlâu neu eu tweaking ar gyfer eich setiau data, efallai yr hoffech chi'r ffordd syml hon o gael rhif o'r llinyn yn Excel.

    Gyda'n Ultimate Suite wedi'i ychwanegu at eich rhuban Excel, dyma sut rydych chi yn gallu adalw rhif yn gyflym o unrhyw linyn alffaniwmerig:

    1. Ewch i'r tab Ablebits Data > Testun grŵp, a chliciwch Echdynnu :

    2. Dewiswch bob cell gyda'r llinynnau ffynhonnell.
    3. Ar baen yr Offeryn Echdynnu, dewiswch y botwm radio Echdynnu rhifau .
    4. Yn dibynnu a ydych am i'r canlyniadau fod yn fformiwlâu neu werthoedd, dewiswch y blwch Mewnosod fel fformiwla neu gadewch ef heb ei ddewis (diofyn).

      Fy nghyngor i yw dewis y blwch hwn os ydych am i'r rhifau a echdynnwyd ddiweddaru'n awtomatig cyn gynted ag y gwneir unrhyw newidiadau i'r llinynnau ffynhonnell. Os ydych chi am i'r canlyniadau fod yn annibynnol ar y llinynnau gwreiddiol (e.e. rhag ofn eich bod yn bwriadu tynnu'r data ffynhonnell yn ddiweddarach), yna peidiwch â dewis y blwch hwn.

    5. Cliciwch y botwm Mewnosod Canlyniadau . Wedi'i wneud!

    Fel yn yr enghraifft flaenorol, mae canlyniadau'rechdynnu yw rhifau , sy'n golygu eich bod yn rhydd i gyfrif, symio, cyfartaleddu, neu wneud unrhyw gyfrifiadau eraill gyda nhw.

    Yn yr enghraifft hon, rydym wedi dewis mewnosod y canlyniadau fel gwerthoedd , a gwnaeth yr ychwanegyn yn union yr hyn y gofynnwyd amdano:

    Os dewiswyd y blwch ticio Mewnosod fel fformiwla , chi' d arsylwi ar fformiwla yn y bar fformiwla. Rhyfedd gwybod pa un? Dadlwythwch dreial Ultimate Suite a gweld drosoch eich hun :)

    Lawrlwythiadau sydd ar gael

    Rhif Echdyniad Excel - llyfr gwaith sampl (ffeil .xlsx)

    Ultimate Suite - fersiwn prawf (.exe ffeil)

    Mae Michael Brown yn frwd dros dechnoleg ymroddedig ac yn frwd dros symleiddio prosesau cymhleth gan ddefnyddio offer meddalwedd. Gyda mwy na degawd o brofiad yn y diwydiant technoleg, mae wedi hogi ei sgiliau yn Microsoft Excel ac Outlook, yn ogystal â Google Sheets a Docs. Mae blog Michael yn ymroddedig i rannu ei wybodaeth a'i arbenigedd ag eraill, gan ddarparu awgrymiadau a thiwtorialau hawdd eu dilyn ar gyfer gwella cynhyrchiant ac effeithlonrwydd. P'un a ydych chi'n weithiwr proffesiynol profiadol neu'n ddechreuwr, mae blog Michael yn cynnig mewnwelediadau gwerthfawr a chyngor ymarferol ar gyfer cael y gorau o'r offer meddalwedd hanfodol hyn.