Tabl cynnwys
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.
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:
- Ewch i'r tab Ablebits Data > Testun grŵp, a chliciwch Echdynnu :
- Dewiswch bob cell gyda'r llinynnau ffynhonnell.
- Ar baen yr Offeryn Echdynnu, dewiswch y botwm radio Echdynnu rhifau .
- 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.
- 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)