রেজেক্স ব্যবহার করে এক্সেলে হোয়াইটস্পেস এবং খালি লাইনগুলি সরান

  • এই শেয়ার করুন
Michael Brown

সবচেয়ে কার্যকর উপায়ে হোয়াইটস্পেসগুলি পরিচালনা করতে চান? একটি কক্ষের সমস্ত স্পেস মুছে ফেলার জন্য রেগুলার এক্সপ্রেশন ব্যবহার করুন, একাধিক স্পেস একটি একক অক্ষর দিয়ে প্রতিস্থাপন করুন, শুধুমাত্র সংখ্যার মধ্যে স্পেস ট্রিম করুন এবং আরও অনেক কিছু৷

আপনি যে ইনপুট ডেটা ব্যবহার করছেন, আপনি খুব কমই একটির সম্মুখীন হবেন৷ স্পেস ছাড়া ডেটাসেট। বেশিরভাগ ক্ষেত্রে, হোয়াইটস্পেস ভাল - আপনি এটিকে সহজে উপলব্ধি করার জন্য তথ্যের বিভিন্ন অংশকে দৃশ্যত আলাদা করতে ব্যবহার করেন। কিছু পরিস্থিতিতে, যাইহোক, এটি খারাপ হতে পারে - অতিরিক্ত স্পেসগুলি আপনার সূত্রগুলিকে এলোমেলো করে দিতে পারে এবং আপনার ওয়ার্কশীটগুলিকে প্রায় নিয়ন্ত্রণের অযোগ্য করে তুলতে পারে৷

    এক্সেলে সাদা স্থানগুলি ট্রিম করতে রেগুলার এক্সপ্রেশন কেন ব্যবহার করবেন?

    এক্সেল ওয়ার্কশীটগুলিতে সাদা স্থানগুলি সরানোর জন্য নিয়মিত এক্সপ্রেশন ব্যবহার করার নিটি-কষ্টে ডুব দেওয়ার আগে, আমি প্রথমেই মনে আসা প্রশ্নটির সমাধান করতে চাই - যখন এক্সেলের ইতিমধ্যেই TRIM আছে তখন কেন আমাদের রেজেক্সের প্রয়োজন? ফাংশন?

    পার্থক্য বোঝার জন্য, আসুন দেখি প্রতিটি ক্ষেত্রে সাদা স্থান কী বিবেচনা করা হয়:

    • বিল্ট-ইন TRIM ফাংশন শুধুমাত্র স্পেস অক্ষর ছিনিয়ে নিতে পারে 7-বিট ASCII সিস্টেমে যার মান 32 আছে৷
    • নিয়মিত এক্সপ্রেশনগুলি হোয়াইটস্পেসের কয়েকটি ভিন্ন রূপ সনাক্ত করতে পারে যেমন স্পেস ( ), ট্যাব (\t), ক্যারেজ রিটার্ন (\r), এবং নতুন লিনেন). উপরন্তু, আছে হোয়াইটস্পেস অক্ষর (\s) যা এই সমস্ত প্রকারের সাথে মেলে এবং কাঁচা ইনপুট পরিষ্কার করার জন্য অত্যন্ত সহায়ক।ডেটা।

    পর্দার আড়ালে ঠিক কী ঘটে তা জেনে, সমাধান বের করা অনেক সহজ, তাই না?

    এক্সেলে রেগুলার এক্সপ্রেশন কীভাবে সক্রিয় করবেন

    এটি একটি সুপরিচিত সত্য যে বহিরাগত এক্সেল রেগুলার এক্সপ্রেশন সমর্থন করে না। তাদের সক্ষম করতে, আপনাকে একটি কাস্টম VBA ফাংশন তৈরি করতে হবে। ভাগ্যক্রমে, আমাদের ইতিমধ্যেই একটি আছে, যার নাম RegExpReplace । অপেক্ষা করুন, কেন "প্রতিস্থাপন" যখন আমরা অপসারণের কথা বলছি? এক্সেলের ভাষায়, "রিমুভ" হল "একটি খালি স্ট্রিং দিয়ে প্রতিস্থাপন" এর আরেকটি শব্দ :)

    আপনার এক্সেলে ফাংশনটি যোগ করতে, শুধু এই পৃষ্ঠা থেকে এর কোডটি কপি করুন, এটি VBA সম্পাদকে পেস্ট করুন , এবং আপনার ফাইলটিকে একটি ম্যাক্রো-সক্ষম ওয়ার্কবুক (.xlsm) হিসাবে সংরক্ষণ করুন।

    আপনার রেফারেন্সের জন্য এখানে ফাংশনের সিনট্যাক্স রয়েছে:

    RegExpReplace(টেক্সট, প্যাটার্ন, প্রতিস্থাপন, [instance_num] , [match_case])

    প্রথম তিনটি আর্গুমেন্ট প্রয়োজন, শেষ দুটি ঐচ্ছিক৷

    কোথায়:

    • টেক্সট - এর মূল স্ট্রিং সার্চ করুন মুছে ফেলার জন্য হোয়াইটস্পেসগুলি , আপনি এই আর্গুমেন্টটিকে যেকোনো একটিতে সেট করবেন:
      • খালি স্ট্রিং ("") একেবারে সমস্ত স্পেস ছাঁটাই করতে<11
      • স্পেস অক্ষর (" ") একাধিক স্পেসকে একটি একক স্পেস অক্ষর দিয়ে প্রতিস্থাপন করতে
  • ইনস্ট্যান্স_সংখ্যা (ঐচ্ছিক) - উদাহরণ সংখ্যা। বেশিরভাগ ক্ষেত্রে, আপনি সমস্ত দৃষ্টান্ত প্রতিস্থাপন করতে এটি বাদ দেবেন(ডিফল্ট)।
  • Match_case (ঐচ্ছিক) - একটি বুলিয়ান মান নির্দেশ করে যে মেলে (সত্য) বা উপেক্ষা করা (মিথ্যা) পাঠ্য ক্ষেত্রে। হোয়াইটস্পেসের জন্য, এটি অপ্রাসঙ্গিক এবং তাই বাদ দেওয়া হয়েছে৷
  • আরও তথ্যের জন্য, অনুগ্রহ করে RegExpReplace ফাংশনটি দেখুন৷

    কীভাবে regex-এর মাধ্যমে হোয়াইটস্পেস সরাতে হয় - উদাহরণ

    এর সাথে আপনার ওয়ার্কবুকে RegExpReplace ফাংশন যোগ করা হয়েছে, আসুন একে একে বিভিন্ন পরিস্থিতিতে মোকাবিলা করি৷

    regex ব্যবহার করে সমস্ত হোয়াইটস্পেস মুছে ফেলুন

    একটি স্ট্রিং এর সমস্ত স্পেস মুছে ফেলতে, আপনি কেবল যেকোন হোয়াইটস্পেস অক্ষর অনুসন্ধান করুন, সহ একটি স্থান, একটি ট্যাব, একটি ক্যারেজ রিটার্ন, এবং একটি লাইন ফিড, এবং একটি খালি স্ট্রিং ("") দিয়ে তাদের প্রতিস্থাপন করুন।

    প্যাটার্ন : \s+

    প্রতিস্থাপন : ""

    সোর্স স্ট্রিংটি A5 এ অনুমান করা হচ্ছে, B5 এর সূত্রটি হল:

    =RegExpReplace(A5, "\s+", "")

    আপনার প্যাটার্নগুলি পরিচালনা করা সহজ করতে , আপনি একটি পূর্বনির্ধারিত কক্ষে regex ইনপুট করতে পারেন এবং $A$2 এর মতো একটি পরম রেফারেন্স ব্যবহার করে সূত্রে এটি সরবরাহ করতে পারেন, তাই কলামের নীচে সূত্রটি অনুলিপি করার সময় ঘরের ঠিকানা অপরিবর্তিত থাকবে৷

    =RegExpReplace(A5, $A$2, "")

    একাধিক হোয়াইটস্পেস সরান

    সরানোর জন্য অতিরিক্ত হোয়াইটস্পেস (অর্থাৎ আরও বেশি n একটানা স্পেস), একই রেজেক্স \s+ ব্যবহার করুন কিন্তু পাওয়া মিলগুলিকে একটি একক স্পেস অক্ষর দিয়ে প্রতিস্থাপন করুন।

    প্যাটার্ন : \s+

    প্রতিস্থাপন : " " "

    =RegExpReplace(A5, "\s+", " ")

    দয়া করে লক্ষ্য করুন যে এই সূত্রটি শুধুমাত্র একটি স্পেস অক্ষর রাখে নাডেটাসেটের নীচে, ধরুন আপনি একাধিক লাইন অক্ষত রেখে সমস্ত অগ্রণী/পরবর্তী স্থানগুলি এবং একটির মধ্যে একটি ব্যতীত সমস্ত স্থান ছাঁটাই করতে চান৷ টাস্কটি পূরণ করার জন্য, আপনার দুটি ভিন্ন RegExpReplace ফাংশনের প্রয়োজন হবে৷

    প্রথম ফাংশনটি একাধিক স্পেসকে একটি একক স্পেস অক্ষর দিয়ে প্রতিস্থাপন করে৷

    =RegExpReplace(A5, " +", " ")

    অন্যটি স্পেস ফাঁকা করে একটি লাইনের শুরু এবং শেষ থেকে:

    =RegExpReplace(A5, "^ +| +$", "")

    শুধু দুটি ফাংশন একে অপরের মধ্যে নেস্ট করুন:

    =RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")

    এবং আপনি একটি পাবেন নিখুঁত ফলাফল:

    একটি অক্ষর দিয়ে একাধিক স্পেস প্রতিস্থাপন করতে Regex

    যদি আপনি একটি স্ট্রিং থেকে সমস্ত স্পেস মুছে ফেলতে চান এবং পরপর স্পেসগুলির প্রতিটি গ্রুপ প্রতিস্থাপন করতে চান একটি নির্দিষ্ট অক্ষরের সাথে, আপনাকে এটি করতে হবে:

    প্রথমে, এই রেজেক্সটি লিডিং এবং ট্রেইলিং হোয়াইটস্পেস ট্রিম করতে ব্যবহার করুন:

    =RegExpReplace(A8, "^[\s]+|[\s]+$", "")

    তারপর, উপরের ফাংশনটি পরিবেশন করুন অন্য RegExpReplace এর টেক্সট আর্গুমেন্ট যা আপনার নির্দিষ্ট করা অক্ষর দিয়ে এক বা একাধিক হোয়াইটস্পেস প্রতিস্থাপন করে, যেমন একটি হাইফেন:

    প্যাটার্ন : \s+

    প্রতিস্থাপন : -

    সোর্স স্ট্রিংটি A8 এ অনুমান করা হচ্ছে, সূত্রটি এই আকারটি নেয়:

    =RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")

    অথবা আপনি স্ক্রিনশটের মতো আলাদা কক্ষে প্যাটার্ন এবং প্রতিস্থাপন লিখতে পারেন:

    Regex খালি লাইন মুছে ফেলার জন্য

    এখানে একটি প্রশ্ন রয়েছে যে ব্যবহারকারীদের একটি ঘরে একাধিক লাইন রয়েছে তারা প্রায়শই জিজ্ঞাসা করে: "আমার কোষগুলিতে অনেকগুলি ফাঁকা লাইন রয়েছে৷ পাওয়ার কোন উপায় আছে কি?প্রতিটি কক্ষের মধ্য দিয়ে যাওয়া এবং প্রতিটি লাইনকে ম্যানুয়ালি মুছে ফেলা ছাড়া এগুলি থেকে মুক্তি পাওয়া যায়?" উত্তর: এটা সহজ!

    বর্তমান লাইনের শুরু থেকে ^ পর্যন্ত একটি অক্ষর নেই এমন খালি লাইনগুলিকে মেলানোর জন্য পরবর্তী লাইন \n, রেজেক্স হল:

    প্যাটার্ন : ^\n

    যদি আপনার দৃশ্যত ফাঁকা লাইনে স্পেস বা ট্যাব থাকে, তাহলে এই রেগুলার এক্সপ্রেশনটি ব্যবহার করুন:

    প্যাটার্ন : ^[\t ]*\n

    শুধু এই সূত্রটি ব্যবহার করে একটি খালি স্ট্রিং দিয়ে রেজেক্স প্রতিস্থাপন করুন, এবং সমস্ত ফাঁকা লাইন একবারে চলে যাবে!

    =RegExpReplace(A5, $A$2, "")

    RegEx টুল দিয়ে হোয়াইটস্পেস অপসারণ

    উপরের উদাহরণগুলি রেজেক্স দ্বারা প্রদত্ত বিস্ময়কর সম্ভাবনার একটি ছোট অংশ প্রদর্শন করেছে। দুর্ভাগ্যবশত, সবগুলো নয় ক্লাসিক রেগুলার এক্সপ্রেশনের বৈশিষ্ট্যগুলি VBA-তে উপলব্ধ৷

    সৌভাগ্যবশত, আমাদের আলটিমেট স্যুটের সাথে অন্তর্ভুক্ত RegEx টুলগুলি এই সীমাবদ্ধতাগুলি থেকে মুক্ত কারণ সেগুলি মাইক্রোসফ্টের .NET RegEx ইঞ্জিন দ্বারা প্রক্রিয়া করা হয়৷ এটি আপনাকে আরও পরিশীলিত প্যাটার্ন তৈরি করতে দেয় যা VBA RegExp দ্বারা সমর্থিত নয় w আপনি এই ধরনের রেগুলার এক্সপ্রেশনের একটি উদাহরণ পাবেন।

    সংখ্যার মধ্যে স্পেস মুছে ফেলতে Regex

    একটি আলফানিউমেরিক স্ট্রিং-এ, ধরুন আপনি শুধুমাত্র সংখ্যার মধ্যে হোয়াইটস্পেস মুছে ফেলতে চান, তাই একটি স্ট্রিং যেমন "A 1 2 B" হয়ে যায় "A 12 B"৷

    যেকোন দুটি সংখ্যার মধ্যে একটি সাদা স্থান মেলানোর জন্য, আপনি নিম্নলিখিত লুক-এরাউন্ড ব্যবহার করতে পারেন:

    প্যাটার্ন : (?<=\d)\s+(?=\d)

    একটি সূত্র ভিত্তিক তৈরি করতেউপরের রেজেক্সে, এখানে সম্পাদন করার দুটি সহজ ধাপ রয়েছে:

    1. Ablebits Data ট্যাবে, Text গ্রুপে, Regex এ ক্লিক করুন টুলস

    2. রেজেক্স টুলস প্যানে, সোর্স ডেটা নির্বাচন করুন, আপনার রেজেক্স লিখুন, রিমুভ করুন বেছে নিন বিকল্প, এবং চাপুন সরান

      ফলাফলগুলিকে সূত্র হিসাবে পেতে, মান নয়, সূত্র হিসাবে সন্নিবেশ করুন চেক বক্সে একটি টিক দিতে ভুলবেন না।

    এক মুহুর্তের মধ্যে, আপনি মূল ডেটার ডানদিকে একটি নতুন কলামে AblebitsRegexRemove ফাংশনটি ঢোকানো দেখতে পাবেন।

    বিকল্পভাবে, আপনি কিছু ঘরে রেজেক্স ইনপুট করতে পারেন , A5 বলুন, এবং Insert Function ডায়ালগ বক্স ব্যবহার করে সরাসরি একটি ঘরে সূত্রটি সন্নিবেশ করুন, যেখানে AblebitsRegexRemove কে AblebitsUDFs এর অধীনে শ্রেণীবদ্ধ করা হয়েছে।

    যেহেতু এই ফাংশনটি বিশেষভাবে স্ট্রিংগুলি অপসারণের জন্য ডিজাইন করা হয়েছে, এটির জন্য শুধুমাত্র দুটি আর্গুমেন্ট প্রয়োজন - ইনপুট স্ট্রিং এবং রেজেক্স:

    =AblebitsRegexRemove(A5, $A$2)

    এভাবে স্পেসগুলি সরাতে হয় রেগুলার এক্সপ্রেশন ব্যবহার করে এক্সেল। আমি পড়ার জন্য আপনাকে ধন্যবাদ এবং আগামী সপ্তাহে আমাদের ব্লগে আপনাকে দেখার জন্য অপেক্ষা করছি!

    উপলব্ধ ডাউনলোডগুলি

    রেজেক্স সহ সাদা স্থান সরান - উদাহরণ (.xlsm ফাইল)

    আলটিমেট স্যুট - ট্রায়াল সংস্করণ (.exe ফাইল)

    শব্দগুলি কিন্তু একটি স্ট্রিংয়ের শুরুতে এবং শেষে, যা ভাল নয়। লিডিং এবং ট্রেইলিং হোয়াইটস্পেস থেকে পরিত্রাণ পেতে, উপরের সূত্রটিকে অন্য RegExpReplace ফাংশনে নেস্ট করুন যা শুরু এবং শেষ থেকে স্পেস ছিঁড়ে দেয়:

    =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")

    তে Regex লিডিং এবং ট্রেইলিং হোয়াইটস্পেস সরান

    একটি লাইনের শুরুতে বা শেষে হোয়াইটস্পেস অনুসন্ধান করতে, শুরু ^ এবং শেষ $ অ্যাঙ্করগুলি ব্যবহার করুন।

    লিডিং সাদা স্থান:

    প্যাটার্ন : ^[\s]+

    ট্রেলিং হোয়াইটস্পেস:

    প্যাটার্ন : [\s ]+$

    লিডিং এবং পরবর্তী হোয়াইটস্পেস:

    প্যাটার্ন : ^[\s]+

    মাইকেল ব্রাউন হল সফ্টওয়্যার সরঞ্জাম ব্যবহার করে জটিল প্রক্রিয়াগুলিকে সরল করার আবেগের সাথে একজন উত্সর্গীকৃত প্রযুক্তি উত্সাহী৷ প্রযুক্তি শিল্পে এক দশকেরও বেশি অভিজ্ঞতার সাথে, তিনি মাইক্রোসফ্ট এক্সেল এবং আউটলুক, সেইসাথে Google পত্রক এবং ডক্সে তার দক্ষতাকে সম্মানিত করেছেন। মাইকেলের ব্লগটি তার জ্ঞান এবং দক্ষতা অন্যদের সাথে ভাগ করে নেওয়ার জন্য নিবেদিত, উত্পাদনশীলতা এবং দক্ষতার উন্নতির জন্য সহজে অনুসরণযোগ্য টিপস এবং টিউটোরিয়াল প্রদান করে৷ আপনি একজন অভিজ্ঞ পেশাদার বা একজন শিক্ষানবিসই হোন না কেন, মাইকেলের ব্লগ এই প্রয়োজনীয় সফ্টওয়্যার সরঞ্জামগুলি থেকে সর্বাধিক পাওয়ার জন্য মূল্যবান অন্তর্দৃষ্টি এবং ব্যবহারিক পরামর্শ প্রদান করে৷