Як выдаліць тэкст або лічбы з ячэйкі Excel

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

Гэты падручнік навучыць вас аддзяляць тэкст ад лічбаў у Excel з дапамогай уласных формул і карыстальніцкіх функцый. Вы таксама даведаецеся, як падзяліць тэкст і лічбы на дзве асобныя калонкі.

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

Калі вы працуеце з аднароднымі дадзенымі, магчыма, вы можаце выкарыстоўваць функцыі LEFT, RIGHT і MID, каб атрымаць аднолькавая колькасць сімвалаў з той жа пазіцыі. Але гэта ідэальны сцэнар для лабараторных даследаванняў. У рэальным жыцці вы, хутчэй за ўсё, маеце справу з рознымі дадзенымі, дзе лічбы стаяць перад тэкстам, пасля тэксту або паміж тэкстам. У прыведзеных ніжэй прыкладах прадстаўлены рашэнні менавіта для гэтага выпадку.

    Як выдаліць тэкст і захаваць лічбы ў ячэйках Excel

    Рашэнне працуе ў Excel 365, Excel 2021 , і Excel 2019

    Microsoft Excel 2019 прадставіў некалькі новых функцый, недаступных у больш ранніх версіях, і мы збіраемся выкарыстоўваць адну з такіх функцый, а менавіта TEXTJOIN, каб выдаліць тэкставыя сімвалы з ячэйкі які змяшчае лічбы.

    Агульная формула:

    TEXTJOIN("", TRUE, IFERROR(MID( cell, ROW(INDIRECT( "1:"&LEN(<1)>ячэйка))), 1) *1, ""))

    У Excel 365 і 2021 гэта таксама будзе працаваць:

    TEXTJOIN("", TRUE,IFERROR(MID( cell, SEQUENCE(LEN( cell)), 1) *1, ""))

    На першы погляд, формулы могуць выглядаць крыху страшна, але яны працуюць :)

    Напрыклад, каб выдаліць тэкст з лікаў у A2, увядзіце адну з прыведзеных ніжэй формул у B2, а затым скапіруйце яе ў столькі вочак, колькі неабходна.

    У Excel 365 - 2019:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))

    У Excel 2019 яго трэба ўвесці як формулу масіва з дапамогай Ctrl + Shift + Enter. У дынамічным масіве Excel гэта працуе як звычайная формула, завершаная клавішай Enter.

    У Excel 365 і 2021:

    =TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))

    У выніку ўсе тэкставыя сімвалы з'яўляюцца выдаляецца з ячэйкі, а лічбы захоўваюцца:

    Як працуе гэтая формула:

    Каб лепш зразумець логіку, давайце пачнем даследаванне формула знутры:

    Вы выкарыстоўваеце ROW(INDIRECT("1:"&LEN(string))) або SEQUENCE(LEN(string)), каб стварыць паслядоўнасць лікаў, якія адпавядаюць агульнай колькасці сімвалаў у зыходным радку, а затым перадайце гэтыя паслядоўныя нумары ў функцыю MID у якасці пачатковых лікаў. У B2 гэтая частка формулы выглядае наступным чынам:

    MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)

    Функцыя MID здабывае кожны сімвал з A2, пачынаючы з самага першага, і вяртае іх у выглядзе масіва:

    {"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Гэты масіў памнажаецца на 1. Лікавыя значэнні захоўваюцца без зменаў, а множанне нелічбавага сімвала прыводзіць да #ЗНАЧЭННЕ! error:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    Функцыя IFERROR апрацоўваегэтыя памылкі і замяняе іх пустымі радкамі:

    {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}

    Гэты канчатковы масіў падаецца функцыі TEXTJOIN, якая аб'ядноўвае непустыя значэнні ў масіве ( ignore_empty аргумент усталяваны ў TRUE), выкарыстоўваючы пусты радок ("") у якасці раздзяляльніка:

    TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})

    Савет. Для Excel 2016 - 2007 рашэнне таксама існуе, але формула значна больш складаная. Вы можаце знайсці гэта ў гэтым падручніку: Як атрымаць лічбы ў Excel.

    Карыстальніцкая функцыя для выдалення тэксту з лічбаў

    Рашэнне працуе для ўсіх версій Excel

    Калі вы карыстаецеся больш старой версіяй Excel або таксама знойдзеце прыведзеныя вышэй формулы цяжка запомніць, нішто не перашкаджае вам стварыць сваю ўласную функцыю з больш простым сінтаксісам і зручнай назвай, такой як RemoveText . Вызначаную карыстальнікам функцыю (UDF) можна запісаць двума спосабамі:

    Код VBA 1:

    Тут мы разглядаем кожны сімвал у зыходным радку па чарзе адзін і праверце, лік ён ці не. Калі лік, сімвал дадаецца да выніковага радка.

    Функцыя RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i) , 1)) Тады sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End Function

    Код VBA 2:

    Код стварае аб'ект для апрацоўкі рэгулярнага выразу. Выкарыстоўваючы RegExp, мы выдаляем з зыходнага радка ўсе сімвалы, акрамя лічбаў 0-9.

    Функцыя RemoveText(str As String ) Як радок з CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) End With End Function

    На невялікіх аркушах абодва коды будуць працаваць аднолькава добра. На вялікіх аркушах, дзе функцыя выклікаецца сотні ці тысячы разоў, код 2, які выкарыстоўвае VBScript.RegExp, будзе працаваць хутчэй.

    Падрабязныя крокі па ўстаўцы кода ў вашу кнігу можна знайсці тут: Як уставіць VBA код у Excel.

    Які б падыход вы ні абралі, з пункту гледжання канчатковага карыстальніка, функцыя выдалення тэксту і пакідання лічбаў простая:

    RemoveText(string)

    Напрыклад, каб выдаліць нелічбавыя сімвалы з ячэйкі A2, формула ў B2:

    =RemoveText(A2)

    Проста скапіруйце яе ў слупок, і вы атрымаеце наступны вынік:

    Заўвага. І родныя формулы, і карыстальніцкая функцыя выводзяць лічбавы радок . Каб ператварыць яго ў лік, памножце вынік на 1, або дадайце нуль, або загарніце формулу ў функцыю VALUE. Напрыклад:

    =RemoveText(A2) + 0

    =VALUE(RemoveText(A2))

    Як выдаліць лічбы з тэкставага радка ў Excel

    Рашэнне працуе ў Excel 365, Excel 2021 і Excel 2019

    Формулы для выдалення лічбаў з літарна-лічбавага радка ў значнай ступені падобныя на тыя, што разглядаліся ў папярэднім прыкладзе.

    Для Excel 365 - 2019:

    TEXTJOIN(" ", TRUE, IF(ISERR(MID( ячэйка , ROW(INDIRECT("1:"&LEN( ячэйка ) )), 1) *1), MID( ячэйка , ROW(INDIRECT("1:"&LEN( ) cell ))), 1), ""))

    У Excel 2019 не забудзьце зрабіць гэта формулай масіву , адначасова націснуўшы клавішы Ctrl + Shift + Enter.

    Для Excel 365 і 2021:

    TEXTJOIN("", TRUE, IF(ISERROR(MID( cell , SEQUENCE(LEN( cell 1) *1), MID ( cell , SEQUENCE(LEN( cell )), 1), ""))

    Напрыклад, каб выдаліць лікі з радка ў A2, формула:

    =TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))

    Або

    =TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))

    У выніку з ячэйкі выдаляюцца ўсе лічбы, а тэкставыя сімвалы захоўваюцца:

    Як паказана на скрыншоце вышэй, формула выдаляе лічбавыя сімвалы з любой пазіцыі ў радку: у пачатку, у канцы і ў сярэдзіне. Аднак ёсць агаворка: калі радок пачынаецца з лічбы, за якой ідзе прабел , гэты прабел захоўваецца, што стварае праблему прабелаў у пачатку (як у B2).

    Каб пазбавіцца лішніх прабелаў перад тэкстам , загарніце формулу ў функцыю TRIM наступным чынам:

    =TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))

    Цяпер вашы вынікі абсалютна ідэальныя!

    Як працуе гэтая формула:

    Па сутнасці, формула працуе гэтак жа, як тлумачылася ў папярэднім прыкладзе. Розніца ў тым, што з канчатковага масіва, які падаецца функцыі TEXTJOIN, вам трэба выдаліць лічбы, а не тэкст. Каб зрабіць гэта, мы выкарыстоўваем камбінацыю функцый IF і ISERROR.

    Як вы памятаеце,MID(…)+0 стварае масіў лікаў і #VALUE! памылкі, якія прадстаўляюць тэкставыя сімвалы ў аднолькавых пазіцыях:

    {2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

    Функцыя ISERROR вылоўлівае памылкі і перадае атрыманы масіў лагічных значэнняў у IF:

    {FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}

    Калі функцыя IF бачыць TRUE (памылка), яна ўстаўляе адпаведны сімвал тэксту ў апрацаваны масіў з дапамогай іншай функцыі MID. Калі функцыя IF бачыць FALSE (лік), яна замяняе яго пустым радком:

    {"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}

    Гэты канчатковы масіў перадаецца ў TEXTJOIN, таму ён аб'ядноўвае тэкставыя сімвалы і выводзіць вынік.

    Карыстальніцкая функцыя для выдалення лічбаў з тэксту

    Рашэнне працуе для ўсіх версій Excel

    Памятаючы, што трэба захоўваць надзейную формулу проста, я падзялюся кодам вызначанай карыстальнікам функцыі (UDF), каб выдаліць любы лічбавы сімвал.

    Код VBA 1:

    Функцыя RemoveNumbers(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Then sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End Function

    VBA code 2:

    Function RemoveNumbers(str As String ) As String With CreateObject ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End With End Function

    Як і ў выпадку з функцыяй RemoveText, другі код лепш выкарыстоўваць у вялікіпрацоўныя аркушы для аптымізацыі прадукцыйнасці.

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

    RemoveNumbers(радок)

    У нашым выпадку, формула ў B2:

    =RemoveNumbers(A2)

    Каб абрэзаць прабелы ў пачатку, калі такія маюцца, укладзіце карыстальніцкую функцыю ўнутры TRIM, як у роднай формуле:

    =TRIM(RemoveNumbers(A2))

    Раздзяліць лічбы і тэкст у асобныя слупкі

    У сітуацыі, калі вы хочаце падзяліць тэкст і лічбы на два слупкі, было б нядрэнна выканаць працу з дапамогай адной формулы , згодны? Для гэтага мы проста аб'ядноўваем код функцый RemoveText і RemoveNumbers у адну функцыю з назвай SplitTextNumbers або проста Split , або што заўгодна :)

    Код VBA 1:

    Функцыя SplitTextNumbers(str As String , is_remove_text As Boolean ) As String Dim sNum, sText, sChar As String sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Then sNum = sNum & sCurChar Else sText = sText & sCurChar End If Next i If True = is_remove_text Then SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End Function

    VBA code 2:

    Function SplitTextNumbers(str As String , is_remove_text As Boolean) As String With CreateObject ( "VBScript.RegExp" ) .Global = True If True = is_remove_text Then .Pattern = "[^0-9]" Else.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End With End Function

    Наша новая карыстальніцкая функцыя патрабуе двух аргументаў:

    SplitTextNumbers(string, is_remove_text)

    Where is_remove_text - гэта лагічнае значэнне, якое паказвае, якія сімвалы трэба выдаліць:

    • TRUE або 1 - выдаліць тэкст і захаваць лічбы
    • FALSE або 0 - выдаліць лічбы і захаваць тэкст

    Для нашага ўзору даных формулы прымаюць наступны выгляд:

    Каб выдаліць нелічбавыя сімвалы:

    =SplitTextNumbers(A2, TRUE)

    Каб выдаліць лічбавыя сімвалы :

    =SplitTextNumbers(A2, FALSE)

    Савет. Каб пазбегнуць патэнцыйнай праблемы з прабеламі ў пачатку, я рэкамендую заўсёды абгортваць формулу, якая выдаляе лічбы, у функцыю TRIM:

    =TRIM(SplitTextNumbers(A2, FALSE))

    Спецыяльны інструмент для выдалення лічбаў або тэксту

    Для тых, хто гэта робіць не хачу ўскладняць рэчы без неабходнасці, я пакажу наш уласны спосаб выдалення тэксту або лічбаў у Excel.

    Калі выкажам здагадку, што наш Ultimate Suite дададзены да вашай стужкі Excel, вы робіце вось што:

    1. На ўкладцы Даныя Ablebits у групе Тэкст націсніце Выдаліць > Выдаліць сімвалы .

  • На панэлі надбудовы абярыце зыходны дыяпазон, абярыце опцыю Выдаліць наборы сімвалаў і абярыце альбо Тэкст сімвалы або лічбы сімвалы ў выпадальным спісе.
  • Націсніце Выдаліць і атрымлівайце асалоду ад выніку :)
  • Савет. Калі вынікі ўтрымліваюць некалькі прабелаў у пачатку, то абрэзаць прабелыінструмент ліквідуе іх у самыя кароткія тэрміны.

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

    Даступныя загрузкі

    Выдаленне тэксту або лічбаў у Excel - прыклады (файл .xlsm)

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

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