فہرست کا خانہ
سفید جگہوں کو انتہائی مؤثر طریقے سے ہینڈل کرنا چاہتے ہیں؟ سیل میں تمام خالی جگہوں کو ہٹانے کے لیے ریگولر ایکسپریشنز کا استعمال کریں، ایک سے زیادہ خالی جگہوں کو ایک کریکٹر سے تبدیل کریں، صرف نمبروں کے درمیان خالی جگہوں کو تراشیں، اور مزید بہت کچھ۔ خالی جگہوں کے بغیر ڈیٹاسیٹ۔ زیادہ تر معاملات میں، وائٹ اسپیس اچھی ہوتی ہے - آپ اسے معلومات کے مختلف ٹکڑوں کو بصری طور پر الگ کرنے کے لیے استعمال کرتے ہیں تاکہ اسے سمجھنا آسان ہو۔ تاہم، کچھ حالات میں، یہ برائی بن سکتا ہے - اضافی خالی جگہیں آپ کے فارمولوں کو گڑبڑ کر سکتی ہیں اور آپ کی ورک شیٹس کو تقریباً ناقابل انتظام بنا سکتی ہیں۔
ایکسل میں سفید جگہوں کو تراشنے کے لیے ریگولر ایکسپریشن کیوں استعمال کریں؟
اس سے پہلے کہ ہم ایکسل ورک شیٹس میں خالی جگہوں کو ہٹانے کے لیے ریگولر ایکسپریشنز کو استعمال کرنے کے بارے میں غور کریں، میں اس سوال کو حل کرنا چاہوں گا جو پہلے ذہن میں آتا ہے - جب ایکسل کے پاس پہلے سے ہی TRIM موجود ہے تو ہمیں ریجیکس کی ضرورت کیوں ہے؟ فنکشن؟
فرق کو سمجھنے کے لیے، آئیے دیکھتے ہیں کہ ہر معاملے میں وائٹ اسپیس کیا سمجھا جاتا ہے:
- بلٹ ان TRIM فنکشن صرف اسپیس کریکٹر کو چھین سکتا ہے۔ جس کی 7 بٹ ASCII سسٹم میں قدر 32 ہے۔
- باقاعدہ اظہار وائٹ اسپیس کی چند مختلف شکلوں کی شناخت کر سکتے ہیں جیسے space ( ) tab (\t)، کیریج ریٹرن (\r)، اور نئی لائن (\n)۔ مزید برآں، وہاں سفید جگہ کا کردار (\s) ہے جو ان تمام اقسام سے ملتا ہے اور خام ان پٹ کو صاف کرنے کے لیے انتہائی مددگار آتا ہےڈیٹا۔
پردے کے پیچھے کیا ہوتا ہے اس کے بارے میں جانتے ہوئے، حل نکالنا بہت آسان ہے، ٹھیک ہے؟
ایکسل میں ریگولر ایکسپریشن کو کیسے فعال کیا جائے
یہ ایک معروف حقیقت ہے کہ آؤٹ آف دی باکس Excel ریگولر ایکسپریشنز کو سپورٹ نہیں کرتا ہے۔ ان کو فعال کرنے کے لیے، آپ کو ایک حسب ضرورت VBA فنکشن بنانا ہوگا۔ خوش قسمتی سے، ہمارے پاس پہلے سے ہی ایک ہے، جس کا نام RegExpReplace ہے۔ انتظار کریں، کیوں "بدلیں" جب کہ ہم ہٹانے کی بات کر رہے ہیں؟ ایکسل کی زبان میں، "ہٹائیں" صرف "خالی سٹرنگ کے ساتھ تبدیل کریں" کے لیے ایک اور لفظ ہے :)
اپنے ایکسل میں فنکشن شامل کرنے کے لیے، صرف اس صفحہ سے اس کا کوڈ کاپی کریں، اسے VBA ایڈیٹر میں چسپاں کریں۔ ، اور اپنی فائل کو بطور میکرو فعال شدہ ورک بک (.xlsm) کے طور پر محفوظ کریں۔
آپ کے حوالہ کے لیے فنکشن کا نحو یہ ہے:
RegExpReplace(text, pattern, replacement, [instance_num] , [match_case])پہلے تین دلائل درکار ہیں، آخری دو اختیاری ہیں۔
کہاں:
- Text - اصل سٹرنگ میں تلاش کریں۔
- پیٹرن - تلاش کرنے کے لیے ریجیکس۔
- تبدیلی - جس کے ساتھ تبدیل کرنا ہے۔ ہٹانے کے لیے وائٹ اسپیس ، آپ اس دلیل کو یا تو پر سیٹ کریں گے:
- خالی سٹرنگ ("") بالکل تمام خالی جگہوں کو تراشنے کے لیے
- اسپیس کریکٹر (" ") ایک سے زیادہ اسپیسز کو ایک اسپیس کریکٹر سے بدلنے کے لیے
- Instance_num (اختیاری) - مثال نمبر۔ زیادہ تر معاملات میں، آپ تمام مثالوں کو تبدیل کرنے کے لیے اسے چھوڑ دیں گے۔(ڈیفالٹ)۔
- Match_case (اختیاری) - ایک بولین قدر جو اس بات کی نشاندہی کرتی ہے کہ آیا (TRUE) سے مماثل ہونا ہے یا (FALSE) ٹیکسٹ کیس کو نظر انداز کرنا ہے۔ وائٹ اسپیس کے لیے، یہ غیر متعلقہ ہے اور اس لیے چھوڑ دیا گیا ہے۔
مزید معلومات کے لیے، براہ کرم RegExpReplace فنکشن دیکھیں۔
ریجیکس کے ساتھ وائٹ اسپیس کو کیسے ہٹایا جائے - مثالیں
اس کے ساتھ RegExpReplace فنکشن آپ کی ورک بک میں شامل کیا گیا ہے، آئیے ایک وقت میں مختلف منظرناموں سے نمٹتے ہیں۔
regex کا استعمال کرتے ہوئے تمام وائٹ اسپیسز کو ہٹا دیں
سٹرنگ میں تمام خالی جگہوں کو ہٹانے کے لیے، آپ صرف کسی بھی وائٹ اسپیس کریکٹر کو تلاش کریں، بشمول ایک اسپیس، ایک ٹیب، ایک کیریج ریٹرن، اور ایک لائن فیڈ، اور انہیں خالی سٹرنگ ("") سے تبدیل کریں۔
پیٹرن : \s+
تبدیلی : ""
یہ فرض کرتے ہوئے کہ سورس سٹرنگ A5 میں ہے، B5 میں فارمولہ ہے:
=RegExpReplace(A5, "\s+", "")
اپنے پیٹرن کو منظم کرنا آسان بنانے کے لیے آپ ریجیکس کو پہلے سے طے شدہ سیل میں داخل کر سکتے ہیں اور اسے $A$2 جیسے مطلق حوالہ کا استعمال کرتے ہوئے فارمولے میں فراہم کر سکتے ہیں، لہذا کالم کے نیچے فارمولے کو کاپی کرتے وقت سیل ایڈریس میں کوئی تبدیلی نہیں آئے گی۔
=RegExpReplace(A5, $A$2, "")
ایک سے زیادہ وائٹ اسپیس ہٹائیں
اضافی وائٹ اسپیس کو ہٹانے کے لیے (یعنی اس سے زیادہ n لگاتار ایک خالی جگہیں)، ایک ہی regex \s+ استعمال کریں لیکن پائے جانے والے مماثلتوں کو ایک اسپیس کریکٹر سے بدل دیں۔
پیٹرن : \s+
تبدیلی : " "
=RegExpReplace(A5, "\s+", " ")
براہ کرم اس بات پر توجہ دیں کہ یہ فارمولہ نہ صرف اس کے درمیان ایک اسپیس کریکٹر رکھتا ہےڈیٹا سیٹ کے نیچے، فرض کریں کہ آپ متعدد لائنوں کو برقرار رکھتے ہوئے تمام آگے/پچھلی جگہوں اور ایک کے علاوہ تمام خالی جگہوں کو تراشنا چاہتے ہیں۔ کام کو پورا کرنے کے لیے، آپ کو دو مختلف RegExpReplace فنکشنز کی ضرورت ہوگی۔
پہلا فنکشن متعدد اسپیسز کو ایک اسپیس کریکٹر سے بدل دیتا ہے۔
=RegExpReplace(A5, " +", " ")
دوسرا اسپیس کو ہٹاتا ہے۔ ایک لائن کے شروع اور آخر سے:
=RegExpReplace(A5, "^ +| +$", "")
بس دو فنکشنز کو ایک دوسرے میں نیسٹ کریں:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
اور آپ کو ایک ملے گا بہترین نتیجہ:
ریجیکس ایک سے زیادہ خالی جگہوں کو ایک کریکٹر سے بدلنے کے لیے
اگر آپ سٹرنگ سے تمام خالی جگہوں کو ہٹانا چاہتے ہیں اور لگاتار خالی جگہوں کے ہر گروپ کو تبدیل کرنا چاہتے ہیں ایک مخصوص کریکٹر کے ساتھ، آپ کو یہ کرنے کی ضرورت ہے:
سب سے پہلے، اس ریجیکس کو آگے اور پیچھے والی سفید جگہوں کو تراشنے کے لیے استعمال کریں:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
پھر، مندرجہ بالا فنکشن کو پیش کریں۔ کسی اور RegExpReplace کے text کے استدلال پر جو آپ کے بتائے ہوئے کردار کے ساتھ ایک یا زیادہ مسلسل خالی جگہوں کو بدل دیتا ہے، جیسے ایک ہائفن:
پیٹرن : \s+
تبدیلی : -
فرض کریں کہ سورس سٹرنگ A8 میں ہے، فارمولہ یہ شکل اختیار کرتا ہے:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
یا آپ پیٹرن اور تبدیلی کو الگ الگ سیلز میں درج کر سکتے ہیں جیسا کہ اسکرین شاٹ میں دکھایا گیا ہے:
Regex خالی لائنوں کو ہٹانے کے لیے
یہاں ایک سوال ہے جو صارفین جن کے ایک سیل میں ایک سے زیادہ لائنیں ہیں اکثر پوچھتے ہیں: "میرے سیلز میں بہت ساری خالی لائنیں ہیں۔ کیا حاصل کرنے کا کوئی طریقہ ہے؟ہر سیل سے گزرنے اور ہر لائن کو دستی طور پر حذف کرنے کے علاوہ ان سے چھٹکارا حاصل کریں؟" جواب: یہ آسان ہے!
خالی لائنوں سے ملنے کے لیے جن میں موجودہ لائن کے آغاز سے لے کر ^ تک ایک بھی حرف نہیں ہے۔ اگلی لائن \n، ریجیکس یہ ہے:
پیٹرن : ^\n
اگر آپ کی بصری طور پر خالی لائنوں میں خالی جگہیں یا ٹیبز ہیں، تو یہ ریگولر ایکسپریشن استعمال کریں:
پیٹرن : ^[\t ]*\n
اس فارمولے کو استعمال کرتے ہوئے صرف ریجیکس کو خالی سٹرنگ سے تبدیل کریں، اور تمام خالی لائنیں ایک ساتھ ختم ہو جائیں گی!
=RegExpReplace(A5, $A$2, "")
RegEx ٹولز کے ساتھ وائٹ اسپیس کو ہٹانا
اوپر کی مثالوں نے regexes کے ذریعہ فراہم کردہ شاندار امکانات کا صرف ایک چھوٹا سا حصہ دکھایا ہے۔ بدقسمتی سے، سبھی نہیں کلاسک ریگولر ایکسپریشنز کی خصوصیات VBA میں دستیاب ہیں۔
خوش قسمتی سے، ہمارے الٹیمیٹ سویٹ کے ساتھ شامل RegEx ٹولز ان حدود سے آزاد ہیں کیونکہ ان پر Microsoft کے .NET RegEx انجن کے ذریعے کارروائی کی جاتی ہے۔ VBA RegExp. بیلو کے ذریعہ تعاون یافتہ نہیں ہے۔ w آپ کو اس طرح کے ریگولر ایکسپریشن کی ایک مثال مل جائے گی۔
نمبروں کے درمیان خالی جگہ کو ہٹانے کے لیے Regex
حروف نمبری اسٹرنگ میں، فرض کریں کہ آپ صرف نمبروں کے درمیان خالی جگہوں کو ہٹانا چاہتے ہیں، تو ایک سٹرنگ جیسے "A 1 2 B" "A 12 B" بن جاتا ہے۔
کسی بھی دو ہندسوں کے درمیان وائٹ اسپیس کو ملانے کے لیے، آپ مندرجہ ذیل لکیریں استعمال کر سکتے ہیں:
پیٹرن : (?<=\d)\s+(?=\d)
کی بنیاد پر فارمولہ بنانامندرجہ بالا ریجیکس پر، انجام دینے کے لیے یہاں دو آسان اقدامات ہیں:
- Ablebits Data ٹیب پر، Text گروپ میں، Regex پر کلک کریں۔ ٹولز ۔
- ریجیکس ٹولز پین پر، سورس ڈیٹا کو منتخب کریں، اپنا ریجیکس درج کریں، ہٹائیں کو منتخب کریں۔ آپشن، اور ہٹائیں کو دبائیں۔
نتائج کو فارمولوں کے طور پر حاصل کرنے کے لیے، اقدار کے نہیں، فارمولے کے طور پر داخل کریں چیک باکس میں ٹک لگانا یاد رکھیں۔
ایک لمحے میں، آپ کو AblebitsRegexRemove فنکشن ایک نئے کالم میں اصل ڈیٹا کے دائیں جانب داخل کیا ہوا نظر آئے گا۔
متبادل طور پر، آپ کچھ سیل میں ریجیکس داخل کرسکتے ہیں۔ ، A5 بولیں، اور Insert Function ڈائیلاگ باکس کا استعمال کرتے ہوئے براہ راست سیل میں فارمولہ داخل کریں، جہاں AblebitsRegexRemove کو AblebitsUDFs کے تحت درجہ بندی کیا گیا ہے۔
چونکہ یہ فنکشن خاص طور پر سٹرنگز کو ہٹانے کے لیے ڈیزائن کیا گیا ہے، اس کے لیے صرف دو دلائل کی ضرورت ہے - ان پٹ سٹرنگ اور ریجیکس:
=AblebitsRegexRemove(A5, $A$2)
25>
اس طرح خالی جگہوں کو ہٹانا ہے۔ ریگولر ایکسپریشنز کا استعمال کرتے ہوئے ایکسل۔ میں پڑھنے کے لیے آپ کا شکریہ ادا کرتا ہوں اور اگلے ہفتے آپ کو ہمارے بلاگ پر دیکھنے کا منتظر ہوں!
دستیاب ڈاؤن لوڈز
ریجیکس کے ساتھ وائٹ اسپیس کو ہٹا دیں - مثالیں (.xlsm فائل)
Ultimate Suite - آزمائشی ورژن (.exe فائل)
الفاظ بلکہ سٹرنگ کے شروع اور آخر میں بھی، جو کہ اچھا نہیں ہے۔ لیڈنگ اور ٹریلنگ وائٹ اسپیس سے چھٹکارا حاصل کرنے کے لیے، مندرجہ بالا فارمولے کو ایک اور RegExpReplace فنکشن میں نیسٹ کریں جو شروع اور آخر سے خالی جگہوں کو ختم کرتا ہے: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
ریجیکس ٹو لیڈنگ اور ٹریلنگ وائٹ اسپیس کو ہٹا دیں
کسی لائن کے شروع یا آخر میں وائٹ اسپیس تلاش کرنے کے لیے، اسٹارٹ ^ اور اینڈ $ اینکرز کا استعمال کریں۔
لیڈنگ وائٹ اسپیس:
پیٹرن : ^[\s]+
ٹریلنگ وائٹ اسپیس:
پیٹرن : [\s ]+$
لیڈنگ اور پچھلے وائٹ اسپیس:
پیٹرن : ^[\s]+