Мазмұны
Бұл оқулық Excel бағдарламасындағы мәтінді сандардан төл формулалар мен теңшелетін функцияларды пайдалану арқылы бөлуді үйретеді. Сіз сондай-ақ мәтін мен сандарды екі бөлек бағанға бөлуді үйренесіз.
Мынаны елестетіп көріңіз: сіз талдау үшін бастапқы деректерді аласыз және сандар бір бағандағы мәтінмен араласатынын біліңіз. Көп жағдайда оларды мұқият тексеру үшін бөлек бағандарда орналастыру ыңғайлырақ болады.
Біртекті деректермен жұмыс істеп жатсаңыз, деректерді шығару үшін СОЛ, ОҢ және ОРТА функцияларын пайдалануға болады. бірдей позициядағы таңбалардың бірдей саны. Бірақ бұл зертханалық сынақтар үшін тамаша сценарий. Нақты өмірде сандар мәтіннің алдында, мәтіннен кейін немесе мәтін арасында келетін әртүрлі деректермен айналысуыңыз ықтимал. Төмендегі мысалдар дәл осы жағдайға арналған шешімдерді ұсынады.
Мәтінді жою және Excel ұяшықтарында сандарды сақтау жолы
Шешім Excel 365, Excel 2021 нұсқаларында жұмыс істейді. , және Excel 2019
Microsoft Excel 2019 бұрынғы нұсқаларында жоқ бірнеше жаңа функцияларды ұсынды және біз ұяшықтағы мәтін таңбаларын алу үшін осындай функциялардың бірін, атап айтқанда TEXTJOIN функциясын қолданамыз. сандар бар.
Жалпы формуласы:
TEXTJOIN("", TRUE, IFERROR(MID( ұяшық, ROW(INDIRECT( "1:"&LEN(<1))>ұяшық))), 1) *1, ""))Excel 365 және 2021 нұсқаларында бұл да жұмыс істейді:
TEXTJOIN("", TRUE,IFERROR(MID( ұяшық, SEQUENCE(LEN( ұяшық)), 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-ге көбейтіледі. Сандық мәндер өзгеріссіз сақталады, ал сандық емес таңбаны көбейту #VALUE! қате:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
IFERROR функциясы өңдейдібұл қателерді және оларды бос жолдармен ауыстырады:
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
Бұл соңғы массив массивтегі бос емес мәндерді біріктіретін TEXTJOIN функциясына қызмет етеді ( елемес_бос аргумент 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 функциясыVBA коды 2:
Код қалыпты өрнекті өңдеу үшін нысан жасайды. RegExp көмегімен біз бастапқы жолдан 0-9 цифрларынан басқа барлық таңбаларды алып тастаймыз.
Функция RemoveText(str As String ) CreateObject бар жол ретінде ( "VBScript.RegExp" ) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) Аяқтау функциясымен аяқталадыШағын жұмыс парақтарында екі код бірдей жақсы жұмыс істейді. Функция жүздеген немесе мыңдаған рет шақырылатын үлкен жұмыс парақтарында VBScript.RegExp қолданатын 2-код жылдамырақ жұмыс істейді.
Жұмыс кітабына кодты енгізудің егжей-тегжейлі қадамдарын мына жерден табуға болады: VBA енгізу әдісі Excel бағдарламасындағы код.
Қай тәсілді таңдасаңыз да, соңғы пайдаланушы тұрғысынан мәтінді жою және сандарды қалдыру функциясы мына сияқты қарапайым:
Мәтінді(жол) алып тастауМысалы, A2 ұяшығынан сандық емес таңбаларды алып тастаңыз, В2 формуласы:
=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(ЖАМА)("1:"&LEN( ұяшық ) )), 1) *1), MID( ұяшық , ROW(ЖАНА("1:"&LEN( ) ұяшық ))), 1), ""))Excel 2019 бағдарламасында Ctrl + Shift + Enter пернелерін бірге басу арқылы оны массив формуласы етуді ұмытпаңыз.
Excel 365 және 2021 үшін:
TEXTJOIN("", TRUE, IF(ISERROR(MID( ұяшық , SEQUENCE(LEN( ұяшық 1) *1), MID ( ұяшық , SEQUENCE(LEN( ұяшық )), 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), ""))
Нәтижесінде ұяшықтан барлық сандар жойылады және мәтіндік таңбалар сақталады:
Жоғарыдағы скриншотта көрсетілгендей, формула жолдың кез келген орнындағы сандық таңбаларды алып тастайды: басында, соңында және ортасында.Бірақ ескерту бар: егер жол саннан кейін бос орын бар басталады, бұл бос орын сақталады, бұл жетекші бос орындар мәселесін тудырады (В2-дегі сияқты).
Мәтін алдындағы қосымша бос орындардан құтылу үшін , формуланы 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}
{"";"";"";" ";"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) Егер False = IsNumeric(Mid(str, i, 1)) болса, sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End ФункцияVBA коды 2:
Функция RemoveNumbers(str As String ) CreateObject бар жол ретінде ( "VBScript.RegExp" ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End with End функциясыRemoveText функциясы сияқты, екінші кодты келесіде қолданған дұрыс. үлкенөнімділікті оңтайландыру үшін жұмыс парақтары.
Код жұмыс кітабыңызға қосылғаннан кейін, осы реттелетін функцияны пайдаланып ұяшықтан барлық сандық таңбаларды жоюға болады:
Numbers(жол) жоюБіздің жағдайда, 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 = "" i = 1 To Len(str) үшін sCurChar = Mid(str, i, 1) True = IsNumeric(sCurChar) болса, sNum = sNum & sCurChar Басқа sText = sText & sCurChar End Егер келесі болса i True болса = is_remove_text Содан кейін SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End ФункцияVBA коды 2:
Функция SplitTextNumbers(str String ретінде , is_remove_re) String Asmovole CreateObject көмегімен ( "VBScript.RegExp" ) .Global = True Егер True болса = is_remove_text Содан кейін .Pattern = "[^0-9]" Басқаша.Pattern = "[0-9]" End If SplitTextNumbers = .Replace(str, "" ) End with End функциясыБіздің жаңа теңшелетін функциямыз екі аргументті қажет етеді:
SplitTextNumbers(жол, is_remove_text)Мұнда мәтінді_жою - қай таңбаларды ажырату керектігін көрсететін логикалық мән:
- ШЫН немесе 1 - мәтінді алып тастау және сандарды сақтау
- ЖАЛҒАН немесе 0 - сандарды жою және мәтінді сақтау
Біздің үлгі деректер жиыны үшін формулалар келесі пішінді алады:
Сандық емес таңбаларды жою үшін:
=SplitTextNumbers(A2, TRUE)
Сандық таңбаларды жою үшін :
=SplitTextNumbers(A2, FALSE)
Кеңес. Бастапқы бос орындардың ықтимал мәселесін болдырмау үшін мен әрқашан TRIM функциясында сандарды алып тастайтын формуланы орауды ұсынамын:
=TRIM(SplitTextNumbers(A2, FALSE))
Сандарды немесе мәтінді жоюға арналған арнайы құрал
Орындайтындар үшін қажетсіз нәрселерді қиындатқанды ұнатпаймын, мен Excel бағдарламасындағы мәтінді немесе сандарды жоюдың өз жолын көрсетемін.
Егер біздің Ultimate Suite Excel лентасына қосылды десек, сіз мұны істейсіз:
- Ablebits Data қойындысындағы Мәтін тобында Жою > Таңбаларды жою түймесін басыңыз.
Кеңес. Нәтижелерде кейбір жетекші бос орындар болса, Кеңістіктерді кесуқұрал оларды қысқа уақытта жояды.
Міне, Excel бағдарламасындағы жолдан мәтінді немесе сандық таңбаларды жою әдісі. Оқығаныңыз үшін алғыс айтамын және сізді келесі аптада біздің блогта күтемін!
Қолжетімді жүктеп алулар
Excel бағдарламасындағы мәтінді немесе сандарды жою - мысалдар (.xlsm файлы)
Ultimate Suite - сынақ нұсқасы (.exe файлы)