Excel: выняць лік з тэкставага радка

  • Падзяліцца Гэтым
Michael Brown

Падручнік паказвае, як атрымаць лік з розных тэкставых радкоў у 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, гэта тое, як вы можа хутка атрымаць лік з любога літарна-лічбавага радка:

    1. Перайдзіце на ўкладку Ablebits Data у групу > Тэкст і націсніце Выняць :

    2. Выберыце ўсе ячэйкі з зыходнымі радкамі.
    3. На панэлі інструмента "Выняць" выберыце радыёкнопку Выняць нумары .
    4. У залежнасці ад таго, ці хочаце вы, каб вынікі былі формуламі або значэннямі, выберыце поле Уставіць як формулу або пакіньце яго не выбраным (па змаўчанні).

      Мая парада - выбраць гэтае поле, калі вы хочаце, каб вынятыя лічбы абнаўляліся аўтаматычна, як толькі ўносяцца змены ў зыходныя радкі. Калі вы хочаце, каб вынікі не залежалі ад зыходных радкоў (напрыклад, калі вы плануеце выдаліць зыходныя даныя пазней), не выбірайце гэта поле.

    5. Націсніце кнопку Уставіць вынікі . Гатова!

    Як і ў папярэднім прыкладзе, вынікіэкстракцыі з'яўляюцца лічбамі , што азначае, што вы можаце свабодна лічыць, сумаваць, сярэдняць або выконваць любыя іншыя вылічэнні з імі.

    У гэтым прыкладзе мы вырашылі ўставіць вынікі як значэнні , і надбудова зрабіла менавіта тое, што патрабавалася:

    Калі быў усталяваны сцяжок Уставіць як формулу , вы d назіраць формулу ў радку формул. Цікава даведацца, які? Проста запампуйце пробную версію Ultimate Suite і пераканайцеся самі :)

    Даступныя спампоўкі

    Нумар экстракта Excel - узор рабочай кнігі (.xlsx файл)

    Ultimate Suite - пробная версія (.exe файл)

    Майкл Браўн - адданы энтузіяст тэхналогій, які любіць спрашчэнне складаных працэсаў з дапамогай праграмных інструментаў. Маючы больш чым дзесяцігадовы досвед працы ў індустрыі тэхналогій, ён удасканальваў свае навыкі ў Microsoft Excel і Outlook, а таксама ў Google Sheets і Docs. Блог Майкла прысвечаны таму, каб падзяліцца сваімі ведамі і вопытам з іншымі, даючы простыя ў выкананні парады і падручнікі для павышэння прадукцыйнасці і эфектыўнасці. Незалежна ад таго, з'яўляецеся вы дасведчаным прафесіяналам або пачаткоўцам, блог Майкла прапануе каштоўную інфармацыю і практычныя парады, каб атрымаць максімальную аддачу ад гэтых неабходных праграмных інструментаў.