فهرست
دا ټیوټوریل به تاسو ته درس درکړي چې څنګه په Excel کې د اصلي فارمولونو او دودیز افعالاتو په کارولو سره متن له شمیرو څخه جلا کړئ. تاسو به دا هم زده کړئ چې څنګه متن او شمیرې په دوه جلا کالمونو ویشئ.
دا تصور وکړئ: تاسو د تحلیل لپاره خام معلومات ترلاسه کوئ او ومومئ چې شمیرې د متن سره په یوه کالم کې مخلوط شوي. په ډیرو حالاتو کې، دا به یقینا ډیر اسانه وي چې دوی د نږدې ازموینې لپاره په جلا کالمونو کې ولرئ.
په هغه صورت کې چې تاسو د یو شان معلوماتو سره کار کوئ، تاسو ممکن د ښي، ښي، او منځني فعالیت څخه کار واخلئ ترڅو د استخراج لپاره. د ورته موقعیت څخه د ورته حروفونو شمیر. مګر دا د لابراتوار ازموینو لپاره مثالی سناریو ده. په ریښتیني ژوند کې، تاسو ډیری احتمال لرئ د متفاوت معلوماتو سره معامله وکړئ چیرې چې شمیرې د متن څخه مخکې، د متن وروسته یا د متن ترمنځ راځي. لاندې مثالونه د دې قضیې لپاره دقیق حل وړاندې کوي.
څنګه لرې کړئ متن لرې کړئ او شمیرې په Excel حجرو کې وساتئ
حل په Excel 365, Excel 2021 کې کار کوي ، او ایکسل 2019
د مایکروسافټ ایکسل 2019 یو څو نوي فنکشنونه معرفي کړل چې په پخوانیو نسخو کې شتون نلري ، او موږ به د داسې یو فنکشن څخه کار واخلو ، یعنی TEXTJOIN ، د حجرې څخه د متن حروف لرې کولو لپاره. شمیرې لري.
عمومي فورمول دا دی:
TEXTJOIN(""، ریښتیا، IFERROR(MID( cell، ROW(Indirect( "1:"&LEN( سیل))))، 1) *1، ""))په Excel 365 او 2021 کې، دا به هم کار وکړي:
TEXTJOIN("")، ریښتیا،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 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 استدلال ریښتیا ته ټاکل شوی) د ډیلیمیټر لپاره د خالي تار ("") په کارولو سره:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
لارښوونه. د Excel 2016 - 2007 لپاره، یو حل هم شتون لري، مګر فورمول خورا پیچلی دی. تاسو کولی شئ دا پدې ټیوټوریل کې ومومئ: څنګه په Excel کې شمیرې استخراج کړئ.
د شمیرو څخه د متن لرې کولو لپاره دودیز فعالیت
حل د ټولو ایکسل نسخو لپاره کار کوي
که تاسو د ایکسل زوړ نسخه کاروئ یا پورتنۍ فورمول هم ومومئ په یاد ساتل ستونزمن دي، هیڅ شی تاسو ته د ساده ترکیب او د کاروونکي دوستانه نوم لکه RemoveText سره د خپل فعالیت د جوړولو مخه نه نیسي. د کارونکي لخوا ټاکل شوی فنکشن (UDF) په دوه ډوله لیکل کیدی شي:
VBA کوډ 1:
دلته، موږ د سرچینې تار کې هر کرکټر ته یو له بل سره ګورو. یو او وګورئ چې ایا دا عددي دی که نه. که یوه شمیره وي، کرکټر په پایله شوي تار کې اضافه کیږي.
فنکشن RemoveText(str as String) Dim sRes as String sRes = "" for i = 1 to Len(str) که ریښتیا = IsNumeric(Mid(str, i) , 1)) بیا sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End فنکشنVBA کوډ 2:
کوډ د منظم بیان پروسس کولو لپاره یو اعتراض رامینځته کوي. د RegExp په کارولو سره، موږ د سرچینې تار څخه د 0-9 عددونو پرته نور ټول حروف لرې کوو.
د CreateObject ( "VBScript. RegExp" ) سره د سټرینګ په توګه فنکشن RemoveText(string as string) .Global = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "") د پای فنکشن سره پایپه کوچنیو ورکشاپونو کې، دواړه کوډونه به په مساوي توګه ښه ترسره کړي. په لویو ورکشاپونو کې چیرې چې فنکشن په سلګونو یا زره ځله ویل کیږي، کوډ 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(" "، ریښتیا، IF(ISERR(MID( cell , ROW(Indirect("1:"&LEN( حجره )))، 1) *1)، MID( حجره ، ROW(غیر مستقیم("1:"&LEN( cell ))))، 1)، ""))په Excel 2019 کې، په یاد ولرئ چې دا د Ctrl + Shift + Enter کیلي په یوځای کولو سره د ارې فورمول جوړ کړئ.
د ایکسل 365 او 2021 لپاره:
TEXTJOIN(")، ریښتیا، IF(ISERROR(MID( cell ، SEQUENCE(LEN( cell 1) *1)، MID ( حجره ، 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), ""))
د پایلې په توګه، ټولې شمیرې د حجرې څخه لیرې شوي او د متن حروف ساتل کیږي:
14>
لکه څنګه چې په پورته سکرین شاټ کې ښودل شوي، فورمول په تار کې له هر ځای څخه عددي حروف پټوي: په پیل کې، په پای کې او په مینځ کې. په هرصورت، یو احتیاط شتون لري: که یو تار د یو شمیر سره پیل کیږي چې وروسته ځای ، دا ځای ساتل کیږي، کوم چې د مخکښو ځایونو ستونزه رامینځته کوي (لکه په B2 کې).
د متن څخه مخکې د اضافي ځایونو څخه د خلاصون لپاره ، فورمول د TRIM فنکشن کې په دې ډول وتړئ:
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
اوس، ستاسو پایلې بالکل سمې دي!
15>
دا فورمول څنګه کار کوي:
په اصل کې، فورمول هماغه کار کوي لکه څنګه چې په تیرو مثال کې تشریح شوی. توپیر دا دی چې د وروستي صف څخه چې د 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 فنکشن ریښتیا (یوه تېروتنه) وویني، دا د اړونده متن کرکټر د بل MID فنکشن په مرسته پروسس شوي صف ته داخلوي. کله چې د IF فنکشن FALSE (یوه شمیره) وویني، نو دا د خالي تار سره بدلوي:
{"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
دا وروستی سرې TEXTJOIN ته لیږدول کیږي، نو دا د متن حروف سره یوځای کوي او پایلې ورکوي. پایله.
د متن څخه د شمیرو لرې کولو لپاره دودیز فعالیت
حل د ټولو ایکسل نسخو لپاره کار کوي
په پام کې نیولو سره چې قوي فورمول باید وساتل شي ساده، زه به د کارونکي لخوا ټاکل شوي فنکشن (UDF) کوډ شریک کړم ترڅو د هر شمیر عددي کریکټر لیرې کړم.
VBA کوډ 1:
فنکشن ریمویو نمبرونه(str As String) Dim sRes لکه String sRes = "" د i = 1 لپاره Len(str) که False = IsNumeric(Mid(str, i, 1)) بیا sRes = sRes & Mid(str, i, 1) End که Next i RemoveNumbers = sRes End FunctionVBA code 2:
Function RemoveNumbers(str As String) د CreateObject ("VBScript.RegExp" سره د تار په توګه ) .Global = ریښتیا .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) د پای فنکشن سره پایلکه څنګه چې د RemoveText فنکشن سره قضیه ده، دوهم کوډ غوره دی چې په کې وکارول شي. لویکاري پاڼې د فعالیت د ښه کولو لپاره.
کله چې کوډ ستاسو په کاري کتاب کې اضافه شي، تاسو کولی شئ د دې دودیز فعالیت په کارولو سره د حجرې څخه ټول عددي حروف لرې کړئ:
RemoveNumbers(string)زموږ په قضیه کې، په B2 کې فورمول دا دی:
=RemoveNumbers(A2)
د مخکښو ځایونو د کمولو لپاره که چیرې شتون ولري، د ګمرک فعالیت په TRIM کې دننه کړئ لکه څنګه چې تاسو اصلي فارمول لرئ:
=TRIM(RemoveNumbers(A2))
شمیرونه او متن په جلا کالمونو وویشئ
په هغه حالت کې چې تاسو غواړئ متن او شمیرې په دوه کالمونو کې جلا کړئ نو دا به ښه وي چې دا کار د یوې فورمول سره ترسره شي. موافق یاست؟ د دې لپاره، موږ یوازې د RemoveText او RemoveNumbers فنکشنونو کوډ په یو فنکشن کې ضم کوو، چې نوم یې SplitTextNumbers ، یا په ساده ډول Split ، یا هر هغه څه چې تاسو یې خوښوئ :)
VBA کوډ 1:
فنکشن SplitTextNumbers(str په توګه String، is_remove_text د بولین په توګه) د سټینګ ډیم sNum، sText، sChar د سټینګ په توګه sCurChar = sNum = sText = "" د i = 1 لپاره Len(str) sCurChar = Mid(str, i, 1) که ریښتیا = IsNumeric(sCurChar) نو بیا sNum = sNum & sCurChar Else sText = sText & sCurChar End که راتلونکی i که ریښتیا = is_remove_text بیا SplitTextNumbers = sNum نور SplitTextNumbers = sText End که پای فنکشنVBA کوډ 2:
فنکشن SplitTextNumbers(str As String، As_remove_text) As_remove_text. د CreateObject ( "VBScript.RegExp") سره .Global = ریښتیا که ریښتیا = is_remove_text بیا .Pattern = "[^0-9]" نور.Pattern = "[0-9]" پای که SplitTextNumbers = .Replace(str, "" ) د پای فنکشن سره پایزموږ نوی دودیز فنکشن دوه دلیلونو ته اړتیا لري:
SplitTextNumbers(string, is_remove_text)چیرته is_remove_text د بولین ارزښت دی چې دا په ګوته کوي چې کوم حروف باید قطع شي:
- ریښتیا یا 1 - متن لرې کړئ او شمیرې وساتئ
- غلط یا 0 - شمیرې لرې کړئ او متن وساتئ
زموږ د نمونې ډیټاسیټ لپاره، فورمولونه دا فورمه اخلي:
د غیر عددي حروفونو لرې کولو لپاره:
=SplitTextNumbers(A2, TRUE)
د عددي حروفونو حذف کولو لپاره :
=SplitTextNumbers(A2, FALSE)
لارښوونه. د مخکښو ځایونو د احتمالي ستونزې څخه مخنیوي لپاره ، زه وړاندیز کوم چې تل هغه فارمول لپاسه کړئ چې د TRIM فنکشن کې شمیرې لرې کوي:
=TRIM(SplitTextNumbers(A2, FALSE))
د شمیرو یا متن لرې کولو ځانګړې وسیله
د هغو کسانو لپاره چې دا کار کوي د غیر ضروري شیانو پیچلتیا نه خوښوي، زه به په Excel کې د متن یا شمیرو لرې کولو خپله طریقه وښیم.
فرض کړئ چې زموږ الټیمیټ سوټ ستاسو د Excel ربن کې اضافه شوی، دا هغه څه دي چې تاسو یې کوئ:
- د Ablebits Data ټب کې، په متن ګروپ کې، په لیرې کړئ > کرکټرونه لرې کړئ کلیک وکړئ.
22>
لارښوونه. که چیرې پایلې ځینې مخکښې ځایونه ولري، د ټرام ځایونهوسیله به یې په هیڅ وخت کې له منځه یوسي.
په Excel کې له تار څخه د متن یا عددي حروفونو لرې کولو څرنګوالی. زه ستاسو د لوستلو لپاره مننه کوم او په راتلونکې اونۍ کې زموږ په بلاګ کې تاسو سره لیدو ته سترګې په لار یم!
موجود ډاونلوډونه
په Excel کې متن یا شمیرې لرې کړئ - مثالونه (.xlsm فایل)
حتمي سویټ - د آزموینې نسخه (.exe فایل)