Змест
Падручнік паказвае, як атрымаць лік з розных тэкставых радкоў у Excel з дапамогай формул і інструмента "Выняць".
Калі гаворка ідзе пра выманне часткі тэкставага радка зададзенай даўжыні , Excel забяспечвае тры функцыі Substring (Left, Right і Mid), каб хутка справіцца з задачай. Калі справа даходзіць да вымання лікаў з літарна-лічбавага радка, Microsoft Excel не дае... нічога.
Каб атрымаць лік з радка ў Excel, патрабуецца крыху кемлівасці, крыху цярпення і мноства розных функцый ўкладзены адзін у аднаго. Ці вы можаце запусціць інструмент Extract і зрабіць працу адным пстрычкай мышы. Ніжэй вы знойдзеце падрабязную інфармацыю аб абодвух метадах.
Як атрымаць лік з канца тэкставага радка
Калі ў вас ёсць слупок літарна-лічбавых радкоў, дзе лік ідзе пасля тэкст, вы можаце выкарыстоўваць наступную формулу, каб атрымаць яго.
RIGHT( cell, LEN( cell) - MAX(IF(ISNUMBER(MID( cell<2)>, ROW(INDIRECT("1:"&LEN( cell ))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN( cell ))), 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, "")
Заўвага. У Dynamic Array Excel (Office 365 і 2021) вы ўводзіце формулу звычайным спосабам з дапамогай клавішы Enter. У Excel 2019 і ранейшых версіях яна працуе толькі як формула масіва, таму не забудзьце націснуць Ctrl + Shift + Enter, каб завяршыць яе.
Як працуе гэтая формула:
Каб атрымаць лік з літарна-лічбавага радка, першае, што вам трэба ведаць, гэта з чаго пачаць выманне. Становішча апошняга нелічбавага сімвала ў радку вызначаецца з дапамогай гэтай хітрай формулы:
MAX(IF(ISNUMBER(MID(A2, ROW(INDIRECT("1:"&LEN() A2))), 1)*1)=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0))
Каб зразумець логіку, давайце даследуем яе знутры :
Камбінацыя ROW(INDIRECT("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 ацэньвае кожны элемент масіва і выносіць вердыкт у выглядзе лагічных значэнняў - TRUE для лікаў, FALSE для ўсяго астатняга:
{TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE}
Гэты масіў пераходзіць да лагічнай праверкі функцыі IF, дзе кожны элемент масіва параўноўваецца з FALSE:
IF({TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE) ;TRUE}=FALSE, ROW(INDIRECT("1:"&LEN(A2))), 0)
Для кожнага FALSE (нелікавага значэння) іншая функцыя ROW(INDIRECT()) вяртае яго адноснае становішча ў радку. Для кожнага TRUE (лікавага значэння) вяртаецца нуль. Атрыманы масіў выглядае такнаступным чынам:
{0;0;3;4;5;6;0;0}
Астатняе лёгка. Функцыя MAX знаходзіць найбольшы лік у прыведзеным вышэй масіве, які з'яўляецца пазіцыяй апошняга нелікавага значэння ў радку (6 у нашым выпадку). Проста адніміце гэтую пазіцыю ад агульнай даўжыні радка, якую вяртае LEN, і перадайце вынік RIGHT, каб паведаміць, колькі сімвалаў трэба атрымаць з правага боку радка:
RIGHT(A2, LEN). (A2) - 6)
Гатова!
Як атрымаць лік з пачатку тэкставага радка
Калі вы працуеце з запісамі, у якіх тэкст з'яўляецца пасля нумара, вы можаце атрымаць лік з пачатку радка з дапамогай гэтай агульнай формулы:
LEFT( cell , MATCH(FALSE, ISNUMBER(MID( cell , ROW(INDIRECT("1: "&LEN( cell )+1)), 1) *1), 0) -1)З зыходным радком у A2 выкарыстоўвайце наступную формулу, каб атрымаць лік:
=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, INDIRECT і LEN для стварэння паслядоўнасці лікаў, роўнай агульнай колькасці сімвалаў у зыходным радку плюс 1 (роля гэтагададатковы сімвал стане зразумелы крыху пазней).
ROW(INDIRECT("1:"&LEN(A2)+1))
MID і ISNUMBER выконваюць тую ж працу, што і ў папярэдні прыклад - MID выцягвае асобныя сімвалы, а ISNUMBER пераўтворыць іх у лагічныя значэнні. Атрыманы масіў TRUE і FALSE перадаецца ў функцыю MATCH як масіў пошуку:
MATCH(FALSE, {TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE}, 0)
MATCH вылічвае адносную пазіцыю першага FALSE, даючы нам пазіцыю першага нелічбавага сімвала ў радку (3 у A2). Каб атрымаць папярэднія лічбы, мы адымаем 1 з пазіцыі першага сімвала тэксту і падаем розніцу ў num_chars аргумент функцыі LEFT:
LEFT(A2, 3-1)
Цяпер вернемся да "лішняга" сімвала ў паслядоўнасці, згенераванай ROW(INDIRECT()+1)). Як вы ўжо ведаеце, гэтая паслядоўнасць з'яўляецца адпраўной кропкай для функцыі MID. Без +1 MID выцягне роўна столькі сімвалаў, колькі ёсць у зыходным радку. Калі радок змяшчае толькі лічбы, ISNUMBER верне толькі TRUE, а MATCH патрабуе хаця б аднаго FALSE. Каб гарантаваць гэта, мы дадаем яшчэ адзін сімвал да агульнай даўжыні радка, які функцыя MID пераўтворыць у пусты радок. Напрыклад, у B7 MID вяртае гэты масіў:
{"1";"2";"3";"4";""}
Заўвага. Як і ў выпадку з функцыяй RIGHT, LEFT таксама вяртае лік падрадок , які тэхнічна з'яўляецца тэкстам, а не лікам. Каб атрымаць вынік у выглядзе ліку, а не лічбавага радка, укладзіце формулу ў функцыю 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)
Дзе A2 - гэта арыгінальны тэкставы радок.
Для разбору гэтай формулы спатрэбіцца асобны артыкул, так што вы можаце проста скапіяваць яе ў свой аркуш, каб пераканацца, што яна сапраўды працуе :)
Аднак пры вывучэнні вынікаў вы можаце заўважыць адзін неістотны недахоп - калі зыходны радок не ўтрымлівае ліку, формула вяртае нуль, як у радку 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, для гэтага паляпшэння):
У адрозненне ад усіх папярэдніх прыкладаў, вынікам гэтай формулы з'яўляецца лік . Каб пераканацца ў гэтым, проста звярніце ўвагу на выраўнаваныя па правым краі значэнні ў слупку B і ўсечаныя нулі ў пачатку.
Падказка. У Excel 365 -У Excel 2019 ёсць значна больш простае рашэнне з дапамогай функцыі TEXTJOIN. Глядзіце, калі ласка, як выдаліць тэкст і захаваць лічбы.
Выняць лік з тэкставага радка з дапамогай Ultimate Suite
Як вы толькі што бачылі, не існуе трывіяльнай формулы Excel, каб атрымаць лік з тэкставага радка. Калі ў вас узніклі цяжкасці з разуменнем формул або іх наладжваннем для вашых набораў даных, вам можа спадабацца гэты просты спосаб атрымаць лік з радка ў Excel.
З дапамогай нашага Ultimate Suite, дададзенага да вашай стужкі Excel, гэта тое, як вы можа хутка атрымаць лік з любога літарна-лічбавага радка:
- Перайдзіце на ўкладку Ablebits Data у групу > Тэкст і націсніце Выняць :
- Выберыце ўсе ячэйкі з зыходнымі радкамі.
- На панэлі інструмента "Выняць" выберыце радыёкнопку Выняць нумары .
- У залежнасці ад таго, ці хочаце вы, каб вынікі былі формуламі або значэннямі, выберыце поле Уставіць як формулу або пакіньце яго не выбраным (па змаўчанні).
Мая парада - выбраць гэтае поле, калі вы хочаце, каб вынятыя лічбы абнаўляліся аўтаматычна, як толькі ўносяцца змены ў зыходныя радкі. Калі вы хочаце, каб вынікі не залежалі ад зыходных радкоў (напрыклад, калі вы плануеце выдаліць зыходныя даныя пазней), не выбірайце гэта поле.
- Націсніце кнопку Уставіць вынікі . Гатова!
Як і ў папярэднім прыкладзе, вынікіэкстракцыі з'яўляюцца лічбамі , што азначае, што вы можаце свабодна лічыць, сумаваць, сярэдняць або выконваць любыя іншыя вылічэнні з імі.
У гэтым прыкладзе мы вырашылі ўставіць вынікі як значэнні , і надбудова зрабіла менавіта тое, што патрабавалася:
Калі быў усталяваны сцяжок Уставіць як формулу , вы d назіраць формулу ў радку формул. Цікава даведацца, які? Проста запампуйце пробную версію Ultimate Suite і пераканайцеся самі :)
Даступныя спампоўкі
Нумар экстракта Excel - узор рабочай кнігі (.xlsx файл)
Ultimate Suite - пробная версія (.exe файл)