Агуулгын хүснэгт
Энэ заавар нь томьёо болон Extract хэрэглүүрийг ашиглан Excel-ийн төрөл бүрийн текст мөрүүдээс хэрхэн тоо гаргаж авахыг харуулж байна.
Өгөгдсөн урттай текстийн мөрийн хэсгийг задлах үед. , Excel нь даалгаврыг хурдан гүйцэтгэхийн тулд гурван дэд мөр (зүүн, баруун, дунд) функцээр хангадаг. Үсэг, тоон тэмдэгт мөрнөөс тоо гаргаж авахад Microsoft Excel нь... юу ч өгдөггүй.
Excel дээр мөрөөс тоо гаргахын тулд бага зэрэг ухаан, тэвчээр, олон янзын функц шаардлагатай. бие биендээ үүрлэсэн. Эсвэл та Extract хэрэглүүрийг ажиллуулаад хулганы товшилтоор ажлыг хийж болно. Доор та хоёр аргын талаар дэлгэрэнгүй мэдээллийг авах болно.
Текстийн мөрийн төгсгөлөөс дугаарыг хэрхэн гаргаж авах вэ
Танд тоо нь дараа нь ирдэг үсэг, тоон мөрийн баганатай үед текстийг авахын тулд та дараах томьёог ашиглаж болно.
ЗӨВ( нүд, LEN( нүд) - MAX(ХЭРЭВ(ISNUMBER(MID( нүд<2))>, ROW(ШУУД БУС("1:"&LEN( нүд ))), 1) *1)=ХУДАЛ, МӨРӨН(ШУУД БУС("1:"&LEN( нүд<) 2>))), 0)))Бид дараа нь томьёоны логикийн талаар ярих болно. Одоохондоо нүд -г анхны мөрийг агуулсан нүднүүдийн лавлагаагаар (манай тохиолдолд A2) сольж, ижил мөрөнд байгаа хоосон нүдэнд томьёог оруулаад B2-д хэлээрэй:
=RIGHT(A2, LEN(A2) - MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)))
Энэ томьёо нь зөвхөн төгсгөлөөс нь тоо авна. Хэрэв мөрийн эхэнд эсвэл дунд нь тоонууд байгаа бол тэдгээр нь мөнүл тоомсорлосон:
Текст функцүүдийн ангилалд хамаарах ЗӨВ функцээр задлах үйлдлийг гүйцэтгэнэ. Энэ функцын гаралт нь үргэлж текст байна. Манай тохиолдолд үр дүн нь тоон дэд мөр бөгөөд энэ нь Excel-ийн хувьд тоо биш харин текст юм.
Хэрэв танд үр дүн нь тоо байх шаардлагатай бол (цаашид тооцоолохдоо ашиглах боломжтой), дараа нь томьёог VALUE функцэд боож эсвэл үр дүнг нь өөрчлөхгүй арифметик үйлдлийг гүйцэтгэнэ. Жишээлбэл, 1-ээр үржүүлэх эсвэл 0 нэмэх. ганц тоо бол IFERROR функцийг ашиглана уу. Жишээ нь:
=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)))), "")
эсвэл
=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, "")
Тайлбар. Динамик массив Excel (Office 365 ба 2021) дээр та Enter товчийг ашиглан томъёог ердийн аргаар оруулна. Excel 2019 болон түүнээс өмнөх хувилбаруудад энэ нь зөвхөн массивын томъёогоор ажилладаг тул дуусгахын тулд Ctrl + Shift + Enter товчийг дарахаа мартуузай.
Энэ томъёо хэрхэн ажилладаг вэ:
Үсэг, тоон тэмдэгт мөрнөөс тоог гаргаж авахын тулд хамгийн түрүүнд задлах ажлыг хаанаас эхлүүлэхээ мэдэх хэрэгтэй. Мөр дэх хамгийн сүүлийн тоон бус тэмдэгтийн байрлалыг дараах төвөгтэй томъёоны тусламжтайгаар тодорхойлно:
MAX(IF(ISNUMBER(MID(A2, ROW(ШУУД)("1:"&LEN() A2))), 1)*1)=ХУДАЛ, МӨРӨН(ШУУД RECT("1:"&LEN(A2))), 0))
Логикийг ойлгохын тулд дотроос нь судалж үзье. :
ROW(ШУУД БУС("1:"&LEN(A2))) хослолэх тэмдэгтийн нийлбэрт (A2) харгалзах тоонуудын дарааллыг үүсгэдэг бөгөөд бид эдгээр дараалсан тоонуудыг MID-д эхлэлийн тоо болгон өгдөг:
MID(A2, {1;2;3;4) ;5;6;7;8}, 1)
MID функц нь A2-аас тэмдэгт бүрийг татаж аваад массив болгон буцаана:
{"0";"5";" -";"E";"C";"-";"0";"1"}
MID нь текст функц учраас түүний гаралт нь үргэлж текст (таны анзаарсанчлан бүх тэмдэгтүүд) байдаг. хашилтанд хавсаргасан байна). Тоон тоог тоо болгон хувиргахын тулд массивыг 1-ээр үржүүлнэ (давхар үгүйсгэх --MID() ижил нөлөө үзүүлнэ). Энэ үйлдлийн үр дүн нь тоонуудын массив ба #VALUE! тоон бус тэмдэгтүүдийг илэрхийлэх алдаа:
ISNUMBER({0;5;#VALUE!;#VALUE!;#VALUE!;#VALUE!;0;1})
ISNUMBER функц массивын элемент бүрийг үнэлж, логикийн утгын хэлбэрээр дүгнэлтээ өгнө - тоонуудын хувьд ҮНЭН, бусад зүйлийн хувьд ХУДАЛ:
{ҮНЭН;ҮНЭН;ХУДАЛ;ХУДАЛ;ХУДАЛ;ХУДАЛ;ҮНЭН;ҮНЭН
Энэ массив нь IF функцийн логик тест рүү ордог бөгөөд массивын элемент бүрийг ХУДАЛ:
Хэрэв({ҮНЭН;ҮНЭН;ХУДАЛ;ХУДАЛ;ХУДАЛ;ХУДАЛ;ҮНЭН"-тэй харьцуулдаг. ;ҮНЭН}=ХУДАЛ, ROW(ШУУД("1:"&LEN(A2))), 0)
ХУДАЛ (тоон бус утга) бүрийн хувьд өөр ROW(ШУУД()) функц буцаана түүний мөр дэх харьцангуй байрлал. ҮНЭН (тоон утга) бүрийн хувьд тэгийг буцаана. Үүссэн массив дараах байдалтай байнадараах:
{0;0;3;4;5;6;0;0}
Үлдсэн нь амархан. MAX функц нь дээрх массивын хамгийн дээд тоог олдог бөгөөд энэ нь мөр дэх хамгийн сүүлийн тоон бус утгын байрлал юм (манай тохиолдолд 6). Зүгээр л, LEN-ийн буцаасан мөрийн нийт уртаас тухайн байрлалыг хасаад үр дүнг БАРУУН тал руу дамжуулж мөрийн баруун талаас хэдэн тэмдэгт гаргахыг мэдэгдээрэй:
RIGHT(A2, LEN) (A2) - 6)
Дууссан!
Текстийн мөрийн эхнээс дугаарыг хэрхэн гаргах вэ
Хэрэв та дугаарын дараа текст гарч ирэх бичлэгүүдтэй ажиллаж байгаа бол Энэ ерөнхий томъёог ашиглан мөрийн эхнээс дугаар гаргаж авна уу:
ЗҮҮН( нүд , ТААРУУЛАХ(ХУДАЛ, ISNUMBER(MID( нүд , ROW(ШУУД)("1: "&LEN( нүд )+1)), 1) *1), 0) -1)А2 дахь эх мөртэй бол дугаарыг авахын тулд дараах томъёог ашиглана уу:
=LEFT(A2, MATCH(FALSE, ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN(A2)+1)), 1) *1), 0) -1)
Дунд болон төгсгөлд хэдэн оронтой байсан ч зөвхөн эхлэлийн тоог гаргаж авна:
Жич. Excel 365 болон Excel 2021 дээр динамик массивыг дэмждэг тул ердийн томьёо сайн ажилладаг. Excel 2019 болон түүнээс өмнөх хувилбаруудад та Ctrl + Shift + Enter дарж үүнийг массивийн томьёо болгох хэрэгтэй.
Энэ томъёо хэрхэн ажилладаг вэ:
Энд бид ROW, DIRECT, LEN функцуудын хослолыг дахин ашиглан эх мөр дэх тэмдэгтүүдийн нийт 1-тэй тэнцүү тооны дарааллыг үүсгэнэ (түүний үүрэгнэмэлт тэмдэгт хэсэг хугацааны дараа тодорхой болно).
ROW(ШУУД("1:"&LEN(A2)+1))
MID болон ISNUMBER нь дараахтай ижил ажлыг гүйцэтгэдэг. өмнөх жишээ - MID нь тус тусдаа тэмдэгтүүдийг татаж, ISNUMBER нь тэдгээрийг логик утга руу хөрвүүлдэг. Үүссэн ҮНЭН ба ХУДАЛ-ын массив нь MATCH функц руу хайлтын массив хэлбэрээр очно:
MATCH(ХУДАЛ, {ҮНЭН;ҮНЭН;ХУДАЛ;ХУДАЛ;ХУДАЛ;ХУДАЛ;ҮНЭН;ҮНЭН;ХУДАЛ}, 0)
MATCH нь эхний ХУДАЛ-ын харьцангуй байрлалыг тооцоолж, мөрөнд эхний тоон бус тэмдэгтийн байрлалыг өгдөг (A2-д 3). Өмнөх тоонуудыг задлахын тулд бид эхний текстийн тэмдэгтийн байрлалаас 1-ийг хасч, зөрүүг ЗҮҮН функцийн тэмдэгтийн тоо аргументад өгнө:
ЗҮҮН(A2, 3-1)
Одоо, ROW(ШУУД()+1))-ээр үүсгэсэн дарааллын "нэмэлт" тэмдэгт рүү буцна уу. Таны мэдэж байгаагаар энэ дараалал нь MID функцийн эхлэлийн цэгүүдийг өгдөг. +1-гүй бол MID нь анхны мөрөнд байгаа шиг олон тэмдэгтийг задлах болно. Хэрэв мөрөнд зөвхөн тоо байгаа бол ISNUMBER нь зөвхөн ҮНЭН-ийг буцаана, харин MATCH-д дор хаяж нэг ХУДАЛ хэрэгтэй болно. Үүнийг баталгаажуулахын тулд бид мөрийн нийт уртад нэг тэмдэгт нэмж, MID функц нь хоосон мөр болгон хувиргах болно. Жишээлбэл, B7 дээр MID нь энэ массивыг буцаана:
{"1";"2";"3";"4";""}
Тайлбар. RIGHT функцийн нэгэн адил ЗҮҮН нь мөн тоо буцаанадэд мөр , энэ нь техникийн хувьд тоо биш харин текст юм. Үр дүнг тоон мөр биш тоо болгон авахын тулд VALUE функцэд томьёо оруулах буюу эхний жишээнд үзүүлсэн шиг үр дүнг 1-ээр үржүүлнэ.
Мөр дэх дурын байрлалаас хэрхэн тоо авах вэ
Хэрэв таны даалгавар нь мөрийн аль ч газраас тоо гаргаж авахыг шаарддаг бол та 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)
А2 нь энд эх текстийн мөр.
Энэ томьёог задлахад тусдаа өгүүлэл шаардагдах тул та үүнийг үнэхээр ажиллаж байгаа эсэхийг шалгахын тулд зүгээр л ажлын хуудас руугаа хуулж болно :)
Гэсэн хэдий ч үр дүнг шалгасны дараа та нэг өчүүхэн сул талыг анзаарч магадгүй - хэрэв эхийн мөрөнд тоо байхгүй бол дээрх дэлгэцийн агшин дахь 6-р мөрөнд байгаа шиг томъёо нь тэгийг буцаана. Үүнийг засахын тулд та томъёог IF мэдэгдэлд ороож болно, логик тест нь эх мөрөнд ямар нэгэн тоо байгаа эсэхийг шалгадаг. Хэрэв тийм бол томьёо нь тоог задлах бөгөөд үгүй бол хоосон мөрийг буцаана:
=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),"")
Доорх дэлгэцийн агшинд үзүүлсэнчлэн сайжруулсан томъёо маш сайн ажилладаг (манай Excel багш Алекст талархал илэрхийлье. Энэ сайжруулалтын хувьд):
Өмнөх бүх жишээнүүдээс ялгаатай нь энэ томьёоны үр дүн нь тоо байна. Үүнийг шалгахын тулд В баганын баруун тийш зэрэгцүүлсэн утгууд болон тайрсан тэргүүлэгч тэгүүдийг анзаараарай.
Зөвлөгөө. Excel 365 дээр -Excel 2019, TEXTJOIN функцийн тусламжтайгаар илүү хялбар шийдэл байдаг. Хэрхэн текстийг устгах болон тоонуудыг хадгалах талаар үзнэ үү.
Ultimate Suite-ийн тусламжтай текстийн мөрнөөс дугаарыг задлах
Таны харж байгаачлан текстийн мөрөөс тоо гаргах ямар ч өчүүхэн Excel томьёо байхгүй байна. Хэрэв та томьёог ойлгох, өгөгдлийн багцаа өөрчлөхөд хүндрэлтэй байгаа бол Excel-ийн стрингээс дугаар авах энгийн арга танд таалагдаж магадгүй.
Бидний Ultimate Suite-г Excel-ийн туузан дээр нэмсэнээр та ингэж чадна. ямар ч үсэг тоон мөрөөс дугаарыг хурдан авах боломжтой:
- Ablebits Data таб > Текст бүлэгт очоод Задлах дээр дарна уу. :
- Эх сурвалжийн мөр бүхий бүх нүдийг сонгоно уу.
- Extract хэрэгслийн самбараас Тоо гаргах радио товчийг сонгоно уу.
- Үр дүн нь томьёо эсвэл утга байх эсэхээс хамаарч Томъёо болгон оруулах нүдийг сонгох эсвэл сонголгүй үлдээгээрэй (өгөгдмөл).
Хэрэв та эхийн мөрөнд ямар нэгэн өөрчлөлт ормогц задалсан тоонууд автоматаар шинэчлэгдэхийг хүсвэл энэ нүдийг сонгохыг зөвлөж байна. Хэрэв та үр дүнг анхны мөрүүдээс хамааралгүй байлгахыг хүсвэл (жишээ нь, эх сурвалжийг дараа нь устгахаар төлөвлөж байгаа бол) энэ нүдийг бүү сонго.
- Ирц оруулах товчийг дарна уу. Дууслаа!
Өмнөх жишээний адил үр дүнолборлолт нь тоо бөгөөд та тэдгээрээр тоолох, нийлбэрлэх, дундажлах болон бусад тооцоолол хийх боломжтой гэсэн үг юм.
Энэ жишээнд бид үр дүнг <9 гэж оруулахаар сонгосон>утгууд бөгөөд нэмэлт зүйл нь яг хүссэн зүйлийг хийсэн:
Хэрэв Томъёо болгон оруулах нүдийг сонгосон бол та' d томьёоны мөрөнд томьёо -г ажигла. Аль нь болохыг мэдэхийг хүсч байна уу? Ultimate Suite-н туршилтыг татаж аваад өөрөө үзээрэй :)
Татаж авах боломжтой
Excel Extract Number - жишээ ажлын ном (.xlsx файл)
Ultimate Suite - туршилтын хувилбар (.exe). файл)