مواد جي جدول
سفيد اسپيس کي تمام مؤثر طريقي سان سنڀالڻ چاھيو ٿا؟ سيل ۾ سڀني اسپيسز کي ختم ڪرڻ لاءِ ريگولر ايڪسپريشن استعمال ڪريو، گھڻن اسپيس کي ھڪڙي اکرن سان تبديل ڪريو، صرف انگن جي وچ ۾ اسپيس کي ڪٽ ڪريو، ۽ وڌيڪ.
توھان جيڪو به ان پٽ ڊيٽا استعمال ڪري رھيا آھيو، توھان کي مشڪل سان ملندو. ڊيٽا سيٽ بغير اسپيس. اڪثر صورتن ۾، وائيٽ اسپيس سٺي آهي - توهان ان کي استعمال ڪريو معلومات جي مختلف حصن کي بصري طور تي الڳ ڪرڻ لاءِ انهي کي سمجهڻ آسان بڻائي. ڪجهه حالتن ۾، بهرحال، اهو خراب ٿي سگهي ٿو - اضافي اسپيس توهان جي فارمولن کي خراب ڪري سگهي ٿو ۽ توهان جي ورڪ شيٽ کي تقريبا غير منظم ڪري سگهي ٿو.
4> 5> 6> ايڪسل ۾ وائيٽ اسپيس کي ٽرم ڪرڻ لاء باقاعده اظهار ڇو استعمال ڪريو؟ان کان اڳ جو اسان ايڪسل ورڪ شيٽ ۾ اڇي اسپيسز کي هٽائڻ لاءِ باقاعده ايڪسپريس استعمال ڪرڻ جي نفاست ۾ وڃون، مان ان سوال کي حل ڪرڻ چاهيان ٿو جيڪو پهرين جاءِ تي ذهن ۾ اچي ٿو - اسان کي ريجڪس جي ضرورت ڇو آهي جڏهن ايڪسل وٽ اڳ ۾ ئي TRIM آهي. فنڪشن؟
فرق کي سمجهڻ لاءِ، اچو ته ڏسون ته هر صورت ۾ وائيٽ اسپيس ڇا سمجهيو ويندو آهي:
- بدليل TRIM فنڪشن صرف اسپيس اکر کي پٽي سگهي ٿو. جنهن جي 7-bit ASCII سسٽم ۾ قدر 32 آهي.
- ريگيولر ايڪسپريشن ڪجهه مختلف شڪلن جي سڃاڻپ ڪري سگهن ٿا وائيٽ اسپيس جهڙوڪ اسپيس ( )، ٽيب ( \ t )، گاڏي موٽڻ ( \ r )، ۽ نئون لائن (\n). اضافي طور تي، اتي آهي سفيد اسپيس اکر (\s) جيڪو انهن سڀني قسمن سان ملندو آهي ۽ خام ان پٽ کي صاف ڪرڻ لاءِ انتهائي مددگار آهيڊيٽا.
ڄاڻڻ سان پردي جي پويان ڇا ٿئي ٿو، اهو حل ڪرڻ تمام آسان آهي، صحيح؟
Excel ۾ باقاعده اظهار کي ڪيئن فعال ڪجي
اها هڪ مشهور حقيقت آهي ته ٻاهر جي باڪس Excel باقاعده اظهار جي حمايت نه ڪندو آهي. انھن کي چالو ڪرڻ لاء، توھان کي ھڪڙي ڪسٽم VBA فنڪشن ٺاهڻ جي ضرورت آھي. خوش قسمت، اسان وٽ اڳ ۾ ئي هڪ آهي، نالو RegExpReplace . انتظار ڪريو، ڇو "بدلايو" جڏهن ته اسان کي هٽائڻ جي باري ۾ ڳالهائي رهيا آهيون؟ Excel جي ٻولي ۾، "remove" صرف هڪ ٻيو لفظ آهي "replace with an empty string" :)
فنڪشن کي پنهنجي Excel ۾ شامل ڪرڻ لاءِ، بس ان جو ڪوڊ نقل ڪريو هن صفحي مان، ان کي پيسٽ ڪريو VBA ايڊيٽر ۾ , ۽ پنھنجي فائل کي محفوظ ڪريو macro-enabled workbook (.xlsm).
ھتي آھي فنڪشن جو نحو توھان جي حوالي لاءِ:
RegExpReplace(text, pattern, replacement, [instance_num] , [match_case])پهريون ٽي دليل گهربل آهن، آخري ٻه اختياري آهن.
جتي:
- ٽيڪسٽ - اصل اسٽرنگ ڏانهن ان ۾ ڳولھيو.
- Pattern - ڳولھڻ لاءِ ريجڪس.
- تبديلي - متن سان تبديل ڪرڻ لاءِ. هٽائڻ سفيد اسپيس لاءِ، توهان هن دليل کي يا ته مقرر ڪندا:
- خالي اسٽرنگ ("") مڪمل طور تي سڀني اسپيس کي ڪٽڻ لاءِ
- اسپيس ڪردار (" ") ڪيترن ئي اسپيس کي ھڪڙي اسپيس اکر سان تبديل ڪرڻ لاءِ
- Instance_num (اختياري) - مثال نمبر. اڪثر ڪيسن ۾، توهان ان کي ختم ڪري ڇڏيندا سڀني مثالن کي تبديل ڪرڻ لاء(ڊفالٽ).
- Match_case (اختياري) - هڪ بوليان قدر ظاهر ڪري ٿو ته ڇا ملائڻو آهي (TRUE) يا نظرانداز (FALSE) ٽيڪسٽ ڪيس. وائيٽ اسپيس لاءِ، اهو غير لاڳاپيل آهي ۽ ان ڪري ختم ڪيو ويو آهي.
وڌيڪ معلومات لاءِ، مهرباني ڪري ڏسو RegExpReplace فنڪشن.
سفيد اسپيس کي ريجڪس سان ڪيئن ختم ڪجي - مثال
سان RegExpReplace فنڪشن توهان جي ورڪ بڪ ۾ شامل ڪيو ويو آهي، اچو ته هڪ ئي وقت ۾ مختلف منظرنامي کي حل ڪريون.
regex استعمال ڪندي سڀئي وائيٽ اسپيس هٽائي ڇڏيو
اسٽرنگ ۾ سڀ اسپيس کي هٽائڻ لاءِ، توهان صرف ڪنهن به وائيٽ اسپيس ڪردار جي ڳولا ڪريو، بشمول هڪ اسپيس، هڪ ٽيب، هڪ گاڏي جي واپسي، ۽ هڪ لائن فيڊ، ۽ انهن کي هڪ خالي اسٽرنگ ("") سان تبديل ڪريو.
Pattern : \s+
تبديلي : ""
فرض ڪريو ماخذ اسٽرنگ A5 ۾ آهي، فارمولا B5 ۾ آهي:
=RegExpReplace(A5, "\s+", "")
پنهنجي نمونن کي منظم ڪرڻ آسان بڻائڻ لاءِ , توھان ان پٽ ڪري سگھو ٿا ريجڪس کي اڳواٽ بيان ڪيل سيل ۾ ۽ ان کي فارمولا کي فراهم ڪري سگھوٿا مڪمل حوالو استعمال ڪندي $A$2، تنھنڪري سيل ايڊريس تبديل نه ٿيندي جڏھن فارمولا کي ڪالم ھيٺ نقل ڪيو وڃي.
=RegExpReplace(A5, $A$2, "")
هڪ کان وڌيڪ وائيٽ اسپيس هٽايو
هٽائڻ اضافي وائيٽ اسپيس (يعني وڌيڪ n هڪ لڳاتار اسپيس)، ساڳي ريجڪس \s+ استعمال ڪريو پر مليل ميچز کي هڪ اسپيس اکر سان مٽايو.
Pattern : \s+
تبديلي : "" "
=RegExpReplace(A5, "\s+", " ")
مهرباني ڪري ڌيان ڏيو ته هي فارمولا هڪ اسپيس ڪردار کي نه رڳو وچ ۾ رکي ٿوڊيٽا سيٽ جي هيٺان، فرض ڪريو ته توھان چاھيو ٿا سڀني اڳوڻن/پيريندڙ اسپيس کي ٽرم ڪرڻ ۽ سڀني کان سواءِ ھڪڙي وچ واري جاءِ، گھڻن لائينن کي برقرار رکندي. ڪم کي پورو ڪرڻ لاءِ، توهان کي ٻه مختلف RegExpReplace فنڪشن جي ضرورت پوندي.
پهريون فنڪشن ڪيترن ئي اسپيس کي هڪ اسپيس ڪردار سان بدلائي ٿو.
=RegExpReplace(A5, " +", " ")
ٻيو هڪ اسپيس کي پٽي ٿو. هڪ لڪير جي شروعات ۽ پڇاڙيءَ کان:
=RegExpReplace(A5, "^ +| +$", "")
بس ٻن ڪمن کي هڪ ٻئي ۾ نيسٽ ڪريو:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
۽ توهان هڪ حاصل ڪندا ڀرپور نتيجو:
18>
12>ريجڪس ڪيترن ئي اسپيسز کي هڪ ڪردار سان تبديل ڪرڻ لاءِجيڪڏهن توهان چاهيو ٿا ته سڀني اسپيسز کي اسٽرنگ مان هٽائڻ ۽ هر گروپ کي لڳاتار اسپيس کي تبديل ڪرڻ هڪ مخصوص ڪردار سان، هي اهو آهي جيڪو توهان کي ڪرڻو آهي:
پهريون، هي ريجڪس استعمال ڪريو اڳواٽ ۽ پيچيدگي واري وائيٽ اسپيس کي ڪٽڻ لاءِ:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
پوءِ، مٿي ڏنل فنڪشن جي خدمت ڪريو ڏانهن متن ڪنهن ٻئي RegExpReplace جو دليل جيڪو توهان جي بيان ڪيل ڪردار سان هڪ يا وڌيڪ مسلسل وائيٽ اسپيس کي تبديل ڪري ٿو، مثال طور. هڪ هائيفن:
Pattern : \s+
تبديل : -
فرض ڪريو ماخذ اسٽرنگ A8 ۾ آهي، فارمولا هي شڪل وٺي ٿو:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
يا توھان داخل ڪري سگھو ٿا نمونن ۽ متبادل کي الڳ سيلن ۾ جيئن اسڪرين شاٽ ۾ ڏيکاريل آھي:
19>
Regex خالي لڪيرن کي هٽائڻ لاءِ
هتي هڪ سوال آهي ته صارف جن وٽ هڪ سيل ۾ هڪ کان وڌيڪ لائينون آهن اهي اڪثر پڇندا آهن: ”منهنجي سيلن ۾ تمام گهڻيون خالي لائينون آهن، ڇا حاصل ڪرڻ جو ڪو طريقو آهي؟هر سيل ذريعي وڃڻ ۽ هر لڪير کي دستي طور تي حذف ڪرڻ کان سواءِ انهن مان نجات حاصل ڪريو؟ جواب: اهو آسان آهي!
خالي لڪير کي ملائڻ لاءِ جن ۾ موجوده لڪير جي شروعات کان وٺي ^ تائين هڪ به اکر نه هجي. ايندڙ لڪير \n، regex آهي:
Pattern : ^\n
جيڪڏهن توهان جي بصري طور تي خالي لائينن ۾ اسپيس يا ٽيب شامل آهن، هي باقاعده اظهار استعمال ڪريو:
Pattern : ^[\t ]*\n
صرف ريجڪس کي هڪ خالي اسٽرنگ سان بدلايو هن فارمولا کي استعمال ڪندي، ۽ سڀئي خالي لائينون هڪ ڀيرو ختم ٿي وينديون!
=RegExpReplace(A5, $A$2, "")
سفيد اسپيسز کي هٽائڻ سان RegEx ٽولز
مٿين مثالن regexes پاران مهيا ڪيل شاندار امڪانن جو صرف هڪ ننڍڙو حصو ڏيکاريو آهي. بدقسمتي سان، سڀ ڪجهه نه کلاسک ريگيولر ايڪسپريشن جون خاصيتون VBA ۾ موجود آهن.
خوش قسمتي سان، اسان جي الٽيميٽ سوٽ سان شامل ڪيل RegEx ٽولز انهن حدن کان آزاد آهن ڇاڪاڻ ته اهي Microsoft جي .NET RegEx انجڻ پاران پروسيس ٿيل آهن. هي توهان کي وڌيڪ نفيس نمونن ٺاهڻ جي اجازت ڏئي ٿو جيڪي VBA RegExp. Belo طرفان سهڪار نه ڪيو ويو آهي w توھان کي اھڙي ريگولر ايڪسپريشن جو ھڪڙو مثال ملندو.
انگن جي وچ ۾ خلا کي ختم ڪرڻ لاءِ Regex
ھڪ الفانمري اسٽرنگ ۾، فرض ڪريو توھان صرف انگن جي وچ ۾ اڇي اسپيس کي ختم ڪرڻ چاھيو ٿا، تنھنڪري ھڪڙي اسٽرنگ جھڙوڪ "A 1 2 B" "A 12 B" ٿي ويندو آهي.
ڪنهن به ٻن عددن جي وچ ۾ وائيٽ اسپيس کي ملائڻ لاءِ، توهان هيٺ ڏنل ڏيک جي چوڌاري استعمال ڪري سگهو ٿا:
Pattern : (؟<=\d)\s+(?=\d)
بنياد تي فارمولا ٺاهڻ لاءِمٿين ريجڪس تي، هتي ٻه آسان قدم آهن انجام ڏيڻ لاءِ:
- تي Ablebits Data ٽيب تي، Text گروپ ۾، ڪلڪ ڪريو Regex اوزار .
- Regex Tools پين تي، ماخذ ڊيٽا چونڊيو، پنھنجي ريجڪس داخل ڪريو، چونڊيو هٽايو اختيار، ۽ مارو هٽايو .
نتيجا حاصل ڪرڻ لاءِ فارمولين جي طور تي، قدرن جي نه، Insert as a formula چيڪ باڪس ۾ هڪ ٽڪ رکڻ ياد رکو.
هڪ لمحي ۾، توهان ڏسندا AblebitsRegexRemove فنڪشن نئين ڪالمن ۾ اصل ڊيٽا جي ساڄي پاسي داخل ڪيو ويو آهي.
متبادل طور تي، توهان ڪجهه سيل ۾ ريجڪس داخل ڪري سگهو ٿا. ، چئو A5، ۽ فارمولا سڌو سيل ۾ داخل ڪريو Function داخل ڪريو ڊائلاگ باڪس استعمال ڪندي، جتي AblebitsRegexRemove کي AblebitsUDFs هيٺ درجه بندي ڪيو ويو آهي.
جيئن ته هي فنڪشن خاص طور تي اسٽرنگ کي هٽائڻ لاءِ ٺاهيو ويو آهي، ان لاءِ صرف ٻن دليلن جي ضرورت آهي- ان پٽ اسٽرنگ ۽ ريجڪس:
=AblebitsRegexRemove(A5, $A$2)
25>
اهڙيءَ طرح اسپيس کي هٽائڻ لاءِ Excel باقاعده اظهار استعمال ڪندي. مان توهان جي پڙهڻ لاءِ مهرباني ڪريان ٿو ۽ توهان کي ايندڙ هفتي اسان جي بلاگ تي ڏسڻ لاءِ منتظر آهيان!
دستياب ڊائون لوڊ
وائيٽ اسپيس کي ريجڪس سان هٽايو - مثال (.xlsm فائيل)
Ultimate Suite - آزمائشي ورزن (.exe فائل)
لفظ، پر هڪ تار جي شروعات ۽ آخر ۾، جيڪو سٺو ناهي. اڳواٽ ۽ پيچيدگي واري وائيٽ اسپيس کان نجات حاصل ڪرڻ لاءِ، مٿي ڏنل فارمولا کي هڪ ٻئي RegExpReplace فنڪشن ۾ داخل ڪريو جيڪو شروع ۽ آخر کان اسپيس اسٽريپ ڪري ٿو: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Regex to اڳواٽ ۽ پٺتي پيل وائيٽ اسپيس کي هٽايو
لائن جي شروعات يا پڇاڙيءَ ۾ وائيٽ اسپيس ڳولڻ لاءِ، استعمال ڪريو start ^ ۽ end $ لنگر.
Leading whitespace:
پيٽرن : ^[\s]+
ٽريلنگ وائيٽ اسپيس:
پيٽرن : [\s ]+$
اڳوڻي ۽ پيريان وائيٽ اسپيس:
پيٽرن : ^[\s]+