Բովանդակություն
Այս ձեռնարկը կսովորեցնի ձեզ, թե ինչպես տարանջատել տեքստը թվերից Excel-ում՝ օգտագործելով բնօրինակ բանաձևեր և հատուկ գործառույթներ: Դուք նաև կսովորեք, թե ինչպես բաժանել տեքստը և թվերը երկու առանձին սյունակների:
Պատկերացրեք սա. դուք ստանում եք հում տվյալներ վերլուծության համար և պարզում եք, որ թվերը խառնվում են տեքստի հետ մեկ սյունակում: Շատ իրավիճակներում, անշուշտ, ավելի հարմար կլինի դրանք առանձին սյունակներում ավելի մանրամասն ուսումնասիրելու համար:
Եթե դուք աշխատում եք միատարր տվյալների հետ, հավանաբար կարող եք օգտագործել LEFT, RIGHT և MID գործառույթները՝ հանելու համար: նույն դիրքից նույն թվով նիշեր: Բայց դա իդեալական սցենար է լաբորատոր հետազոտությունների համար: Իրական կյանքում, ամենայն հավանականությամբ, դուք գործ կունենաք տարբեր տվյալների հետ, որտեղ թվերը գալիս են տեքստից առաջ, տեքստից հետո կամ տեքստի միջև: Ստորև բերված օրինակները լուծումներ են տալիս հենց այս դեպքի համար:
Ինչպես հեռացնել տեքստը և պահել թվերը Excel-ի բջիջներում
Լուծումն աշխատում է Excel 365-ում, Excel 2021-ում: և Excel 2019
Microsoft Excel 2019-ը ներկայացրել է մի քանի նոր գործառույթներ, որոնք հասանելի չեն ավելի վաղ տարբերակներում, և մենք պատրաստվում ենք օգտագործել այդպիսի գործառույթներից մեկը՝ TEXTJOIN-ը՝ տեքստային նիշերը բջիջից հեռացնելու համար։ թվեր պարունակող:
Ընդհանուր բանաձևն է՝
TEXTJOIN("", TRUE, IFERROR(MID( բջիջ, ROW(INDIRECT( "1:"&LEN( բջջ))), 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 ֆունկցիային, որը միավորում է զանգվածի ոչ դատարկ արժեքները ( ignore_empty արգումենտ սահմանվել է TRUE)՝ օգտագործելով դատարկ տող ("") սահմանազատողի համար.
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
Հուշում. Excel 2016 - 2007-ի համար նույնպես գոյություն ունի լուծում, բայց բանաձևը շատ ավելի բարդ է: Դուք կարող եք գտնել այն այս ձեռնարկում. Ինչպես հանել թվերը Excel-ում:
Տեքստը թվերից հեռացնելու հարմարեցված գործառույթը
Լուծումն աշխատում է Excel-ի բոլոր տարբերակների համար
Եթե օգտագործում եք Excel-ի հին տարբերակը կամ գտնում եք նաև վերը նշված բանաձևերը դժվար է հիշել, ոչինչ չի խանգարում ձեզ ստեղծել ձեր սեփական ֆունկցիան ավելի պարզ շարահյուսությամբ և օգտագործողի համար հարմար անունով, ինչպիսին է RemoveText : Օգտատիրոջ կողմից սահմանված ֆունկցիան (UDF) կարող է գրվել երկու եղանակով.
VBA կոդ 1:
Այստեղ մենք նայում ենք սկզբնաղբյուրի յուրաքանչյուր նիշին մեկ առ մեկ: մեկը և ստուգեք՝ թվային է, թե ոչ: Եթե թիվ է, նիշը ավելացվում է ստացված տողին:
Function RemoveText(str As String ) Dim sRes As String sRes = "" For i = 1 To Len(str) If True = IsNumeric(Mid(str, i , 1)) Հետո sRes = sRes & amp; Mid(str, i, 1) End If Next i RemoveText = sRes End FunctionVBA կոդ 2:
Կոդը ստեղծում է օբյեկտ՝ կանոնավոր արտահայտությունը մշակելու համար: Օգտագործելով RegExp, մենք հեռացնում ենք բոլոր այլ նիշերը, բացի 0-9 թվանշաններից, աղբյուրի տողից:
Function RemoveText(str As String) As String With CreateObject ("VBScript.RegExp") .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "") Ավարտել 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-ի համար՝
Excel 2019-ում հիշեք, որ այն դարձրեք զանգվածի բանաձև ` սեղմելով Ctrl + Shift + Enter ստեղները միասին:
Excel 365-ի և 2021-ի համար՝
TEXTJOIN("", TRUE, IF(ISERROR(MID( բջիջ , SEQUENCE(LEN( բջիջ 1) *1), MID ( բջիջ , SEQUENCE(LEN( բջիջ )), 1), ""))Օրինակ, A2-ի տողից թվերը հանելու համար բանաձևը հետևյալն է. 3>
=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:
Function RemoveNumbers(str As String) Dim sRes As String sRes = "" For i = 1 To Len(str) If False = IsNumeric(Mid(str, i, 1)) Այնուհետեւ sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes End FunctionVBA կոդը 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(string)Մեր դեպքում՝ B2-ի բանաձևը հետևյալն է.
=RemoveNumbers(A2)
Առաջատար բացատները, եթե այդպիսիք կան, տեղադրեք հատուկ գործառույթը TRIM-ի ներսում, ինչպես բնիկ բանաձևը.
=TRIM(RemoveNumbers(A2))
Թվերն ու տեքստը բաժանեք առանձին սյունակների
Այն իրավիճակում, երբ ցանկանում եք տեքստը և թվերը բաժանել երկու սյունակի, լավ կլիներ, որ աշխատանքը կատարվեր մեկ բանաձևով։ , համաձայնվել? Դրա համար մենք պարզապես միավորում ենք RemoveText և RemoveNumbers ֆունկցիաների կոդը մեկ ֆունկցիայի մեջ, որը կոչվում է SplitTextNumbers , կամ պարզապես Split , կամ ինչ ուզում ես :)
VBA կոդը 1:
Function SplitTextNumbers(str As String , is_remove_text as Boolean ) As String Dim sNum, sText, sChar Որպես տող sCurChar = sNum = sText = "" For i = 1 To Len(str) sCurChar = Mid(str, i, 1) If True = IsNumeric(sCurChar) Ապա sNum = sNum & sCurChar Else sText = sText & AMP; sCurChar End If Next i If True = is_remove_text Ապա SplitTextNumbers = sNum Else SplitTextNumbers = sText End If End FunctionVBA կոդը 2:
Function SplitTextNumbers(str As String Asremoole_)_ext: CreateObject-ով ( «VBScript.RegExp» ) .Global = True If True = is_remove_text Այնուհետեւ .Pattern = «[^0-9]» Այլ.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 ժապավենին, սա այն է, ինչ դուք անում եք.
- Ablebits Data ներդիրում, Text խմբում սեղմեք Հեռացնել > Հեռացնել նիշերը :
Հուշում. Եթե արդյունքները պարունակում են որոշ առաջատար բացատներ, ապա կտրեք բացատներըգործիքը կարճ ժամանակում կվերացնի դրանք:
Այսպես կարելի է հեռացնել տեքստը կամ թվային նիշերը Excel-ի տողից: Ես շնորհակալություն եմ հայտնում կարդալու համար և անհամբեր սպասում եմ ձեզ հաջորդ շաբաթ մեր բլոգում տեսնելու համար:
Հասանելի ներբեռնումներ
Հեռացրեք տեքստը կամ թվերը Excel-ից. օրինակներ (.xlsm ֆայլ)
Ultimate Suite - փորձնական տարբերակ (.exe ֆայլ)