Excel: извлече број од текстуална низа

  • Споделете Го Ова
Michael Brown

Упатството покажува како да се извлече број од различни текстуални низи во Excel со користење на формули и алатката Extract.

Кога станува збор за извлекување дел од текстуална низа со дадена должина , Excel обезбедува три функции на Substring (лево, десно и средно) за брзо справување со задачата. Кога станува збор за извлекување броеви од алфанумеричка низа, Microsoft Excel не обезбедува... ништо.

За да добиете број од низа во Excel, потребна е малку генијалност, малку трпение и еден куп различни функции вгнездени еден во друг. Или, можете да ја извршите алатката Extract и да ја завршите работата со кликнување на глувчето. Подолу ќе најдете целосни детали за двата методи.

    Како да извлечете број од крајот на текстуалната низа

    Кога имате колона од алфанумерички низи каде бројот доаѓа после текст, можете да ја користите следнава формула за да го добиете.

    RIGHT( ќелија, LEN( ќелија) - MAX(IF(ISNUMBER(MID( ќелија, ROW(INDIRECT("1:"&LEN( ќелија))), 1) *1)=FALSE, ROW(INDIRECT("1:"&LEN( ќелија))), 0)))

    Ќе се задржиме на логиката на формулата малку подоцна. Засега, едноставно заменете ја ќелија со упатување на ќелијата што ја содржи оригиналната низа (А2 во нашиот случај) и внесете ја формулата во која било празна ќелија во истиот ред, кажете во B2:

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

    Оваа формула добива број само од крајот. Ако низата има и броеви на почетокот или средината, тие сеигнорирано:

    Извлекувањето се врши со функцијата RIGHT која спаѓа во категоријата Text функции. Излезот од оваа функција е секогаш текст . Во нашиот случај, резултатот е нумеричка подниза , која во однос на 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(INDIRECT("1:"&LEN( А2))), 1)*1)=НЕТОЧНО, РЕД(ИНДИРЕКТ("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;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()) функција неговата релативна положба во низата. За секоја ВИСТИНА (нумеричка вредност), се враќа нула. Резултирачката низа изгледа какоследува:

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

    Остатото е лесно. Функцијата MAX го наоѓа најголемиот број во горната низа, што е позицијата на последната ненумеричка вредност во низата (6 во нашиот случај). Едноставно, одземете ја таа позиција од вкупната должина на низата вратена од LEN и префрлете го резултатот на RIGHT за да му дадете до знаење колку знаци да извлече од десната страна на низата:

    RIGHT(A2, LEN (A2) - 6)

    Готово!

    Како да извлечете број од почетокот на текстуалната низа

    Ако работите со записи каде текстот се појавува после бројот, можете извлечете број од почетокот на низата со користење на оваа генеричка формула:

    LEFT( ќелија, MATCH(FALSE, ISNUMBER(MID( ќелија, ROW(INDIRECT("1: "&LEN( ќелија)+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 > Text и кликнете Extract :

    2. Изберете ги сите ќелии со изворните низи.
    3. На окното на алатката Extract, изберете го радио копчето Extract numbers .
    4. Во зависност од тоа дали сакате резултатите да бидат формули или вредности, изберете го полето Вметни како формула или оставете го неизбрано (стандардно).

      Мој совет е да го изберете ова поле ако сакате извлечените броеви автоматски да се ажурираат штом ќе се направат какви било промени во изворните низи. Ако сакате резултатите да бидат независни од оригиналните низи (на пр. во случај да планирате да ги отстраните изворните податоци подоцна), тогаш не го избирајте ова поле.

    5. Кликнете на копчето Вметни резултати . Готово!

    Како и во претходниот пример, резултатите одекстракцијата се броеви , што значи дека можете слободно да броите, собирате, просекувате или вршите какви било други пресметки со нив.

    Во овој пример, избравме да ги вметнеме резултатите како вредности , а додатокот го направи токму она што беше побарано:

    Ако полето за избор Внеси како формула беше избрано, ти' г набљудувајте формула во лентата со формули. Љубопитни да знаете која? Само преземете го пробниот период на Ultimate Suite и уверете се :)

    Достапни преземања

    Excel Extract Number - примерок на работна книга (.xlsx датотека)

    Ultimate Suite - пробна верзија (.exe датотека)

    Мајкл Браун е посветен технолошки ентузијаст со страст за поедноставување на сложените процеси користејќи софтверски алатки. Со повеќе од една деценија искуство во технолошката индустрија, тој ги усоврши своите вештини во Microsoft Excel и Outlook, како и Google Sheets и Docs. Блогот на Мајкл е посветен на споделување на своето знаење и експертиза со другите, обезбедувајќи лесни за следење совети и упатства за подобрување на продуктивноста и ефикасноста. Без разлика дали сте искусен професионалец или почетник, блогот на Мајкл нуди вредни сознанија и практични совети за да го извлечете максимумот од овие основни софтверски алатки.