শর্ত দ্বারা পাঠ্য বন্ধন

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

ধরা যাক যে আমাদের কাছে গ্রাহকদের একটি ডাটাবেস রয়েছে, যেখানে একটি কোম্পানির নাম তার কর্মীদের বিভিন্ন ইমেলের সাথে মিলিত হতে পারে। আমাদের কাজ হল কোম্পানির নাম দ্বারা সমস্ত ঠিকানা সংগ্রহ করা এবং সেগুলিকে একত্রিত করা (কমা বা সেমিকোলন দ্বারা পৃথক করা) যাতে গ্রাহকদের জন্য একটি মেইলিং তালিকা তৈরি করা যায়, যেমন আউটপুট পাওয়া যায় এরকম কিছু:

শর্ত দ্বারা পাঠ্য বন্ধন

অন্য কথায়, আমাদের একটি টুল দরকার যা শর্ত অনুযায়ী পাঠ্যকে আঠালো (লিঙ্ক) করবে - ফাংশনের একটি অ্যানালগ সুমেস্লি (SUMIF), কিন্তু পাঠ্যের জন্য।

পদ্ধতি 0. সূত্র

খুব মার্জিত নয়, তবে সবচেয়ে সহজ উপায়। আপনি একটি সাধারণ সূত্র লিখতে পারেন যা পরের সারিতে থাকা কোম্পানিটি আগেরটির থেকে আলাদা কিনা তা পরীক্ষা করবে। যদি এটি পৃথক না হয়, তাহলে কমা দ্বারা পৃথক করা পরবর্তী ঠিকানাটি আঠালো করুন। যদি এটি ভিন্ন হয়, তাহলে আমরা জমে থাকা "রিসেট" করি, আবার শুরু করি:

শর্ত দ্বারা পাঠ্য বন্ধন

এই পদ্ধতির অসুবিধাগুলি সুস্পষ্ট: প্রাপ্ত অতিরিক্ত কলামের সমস্ত কক্ষ থেকে, আমাদের প্রতিটি কোম্পানির (হলুদ) জন্য শুধুমাত্র শেষগুলি প্রয়োজন। যদি তালিকাটি বড় হয়, তবে দ্রুত সেগুলি নির্বাচন করার জন্য, আপনাকে ফাংশনটি ব্যবহার করে অন্য একটি কলাম যুক্ত করতে হবে DLSTR (LEN), জমে থাকা স্ট্রিংগুলির দৈর্ঘ্য পরীক্ষা করা হচ্ছে:

শর্ত দ্বারা পাঠ্য বন্ধন

এখন আপনি বেশিগুলিকে ফিল্টার করতে পারেন এবং আরও ব্যবহারের জন্য প্রয়োজনীয় ঠিকানা আঠালো কপি করতে পারেন।

পদ্ধতি 1. একটি শর্ত দ্বারা gluing এর ম্যাক্রোফাংশন

যদি মূল তালিকাটি কোম্পানি দ্বারা বাছাই করা না হয়, তাহলে উপরের সহজ সূত্রটি কাজ করে না, তবে আপনি VBA-তে একটি ছোট কাস্টম ফাংশন দিয়ে সহজেই ঘুরে আসতে পারেন। একটি কীবোর্ড শর্টকাট টিপে ভিজ্যুয়াল বেসিক এডিটর খুলুন Alt + F11 বা বোতাম ব্যবহার করে ভিসুয়াল বেসিক ট্যাব ডেভেলপার (বিকাশকারী). যে উইন্ডোটি খোলে সেখানে, মেনুর মাধ্যমে একটি নতুন খালি মডিউল ঢোকান সন্নিবেশ - মডিউল এবং সেখানে আমাদের ফাংশনের পাঠ্য অনুলিপি করুন:

ফাংশন MergeIf(TextRange as Range, SearchRange as Condition, Condition as String) Dim Delimeter as Long Delimeter = ", " gluings একে অপরের সমান নয় - আমরা একটি ত্রুটি সহ প্রস্থান করি যদি SearchRange.Count <> TextRange.Count তারপর MergeIf = CVErr(xlErrRef) Exit Function End If 'সমস্ত সেলের মধ্য দিয়ে যান, শর্তটি পরীক্ষা করুন এবং ভেরিয়েবল OutText For i = 1 থেকে SearchRange-এ পাঠ্য সংগ্রহ করুন। Cells.count যদি SearchRange.Cells(i) কন্ডিশনের মত হয় তাহলে OutText = OutText & TextRange.Cells(i) & Delimeter Next i 'শেষ ডিলিমিটার ছাড়াই ফলাফল প্রদর্শন করুন MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) End ফাংশন  

আপনি যদি এখন মাইক্রোসফ্ট এক্সেলে ফিরে যান, তবে ফাংশনের তালিকায় (বোতাম fx সূত্র বার বা ট্যাবে সূত্র - সন্নিবেশ ফাংশন) আমাদের ফাংশন খুঁজে পাওয়া সম্ভব হবে মার্জইফ বিভাগে ব্যবহারকারী সংজ্ঞায়িত (ব্যবহারকারী সংজ্ঞায়িত). ফাংশনের আর্গুমেন্টগুলি নিম্নরূপ:

শর্ত দ্বারা পাঠ্য বন্ধন

পদ্ধতি 2. অযৌক্তিক অবস্থা দ্বারা পাঠ্য সংযুক্ত করুন

যদি আমরা আমাদের ম্যাক্রোর 13 তম লাইনের প্রথম অক্ষরটি প্রতিস্থাপন করি = আনুমানিক ম্যাচ অপারেটরের কাছে মত, তারপর নির্বাচনের মাপকাঠির সাথে প্রাথমিক ডেটার একটি অযৌক্তিক মিল দ্বারা আঠালো করা সম্ভব হবে। উদাহরণস্বরূপ, যদি কোম্পানির নামটি বিভিন্ন ভেরিয়েন্টে লেখা যায়, তাহলে আমরা একটি ফাংশন দিয়ে সেগুলিকে পরীক্ষা করে সংগ্রহ করতে পারি:

শর্ত দ্বারা পাঠ্য বন্ধন

স্ট্যান্ডার্ড ওয়াইল্ডকার্ড সমর্থিত:

  • তারকাচিহ্ন (*) - যে কোনো অক্ষরের সংখ্যাকে বোঝায় (তাদের অনুপস্থিতি সহ)
  • প্রশ্ন চিহ্ন (?) - যে কোনো একক অক্ষরকে বোঝায়
  • পাউন্ড চিহ্ন (#) - যে কোনো একটি সংখ্যা (0-9) বোঝায়

ডিফল্টরূপে, লাইক অপারেটর কেস সংবেদনশীল, যেমন বোঝে, উদাহরণস্বরূপ, "ওরিয়ন" এবং "ওরিয়ন" বিভিন্ন কোম্পানি হিসাবে। কেস উপেক্ষা করতে, আপনি ভিজ্যুয়াল বেসিক সম্পাদকের মডিউলের একেবারে শুরুতে লাইনটি যোগ করতে পারেন বিকল্প পাঠ তুলনা করুন, যা কেস সংবেদনশীল হতে লাইক স্যুইচ করবে।

এইভাবে, আপনি শর্তগুলি পরীক্ষা করার জন্য খুব জটিল মুখোশ রচনা করতে পারেন, উদাহরণস্বরূপ:

  • ?1##??777RUS - 777 অঞ্চলের সমস্ত লাইসেন্স প্লেটের নির্বাচন, 1 দিয়ে শুরু
  • LLC* - সমস্ত কোম্পানি যাদের নাম এলএলসি দিয়ে শুরু হয়
  • ##7## – পাঁচ-সংখ্যার ডিজিটাল কোড সহ সমস্ত পণ্য, যেখানে তৃতীয় সংখ্যা 7
  • ?????? - পাঁচটি অক্ষরের সব নাম, ইত্যাদি।

পদ্ধতি 3. দুটি অবস্থার অধীনে টেক্সট gluing জন্য ম্যাক্রো ফাংশন

কাজের ক্ষেত্রে একটি সমস্যা হতে পারে যখন আপনাকে একাধিক শর্তে পাঠ্য লিঙ্ক করতে হবে। উদাহরণস্বরূপ, আসুন কল্পনা করি যে আমাদের পূর্ববর্তী সারণীতে, শহরের সাথে আরও একটি কলাম যুক্ত করা হয়েছিল, এবং আঠালো কেবল একটি প্রদত্ত সংস্থার জন্য নয়, একটি প্রদত্ত শহরের জন্যও করা উচিত। এই ক্ষেত্রে, আমাদের ফাংশনটিকে আরও একটি পরিসীমা চেক যোগ করে কিছুটা আধুনিকীকরণ করতে হবে:

ফাংশন MergeIfs(টেক্সটরেঞ্জ রেঞ্জ হিসাবে, সার্চ রেঞ্জ 1 রেঞ্জ, কন্ডিশন 1 স্ট্রিং, সার্চ রেঞ্জ 2 রেঞ্জ, কন্ডিশন 2 স্ট্রিং) ডিম ডেলিমিটার স্ট্রিং হিসাবে, i অ্যাজ লং ডেলিমিটার = "," 'ডেলিমিটার অক্ষর (স্পেস দিয়ে প্রতিস্থাপন করা যেতে পারে বা ; ইত্যাদি) e.) 'যদি বৈধকরণ এবং আঠালো রেঞ্জ একে অপরের সমান না হয়, একটি ত্রুটি সহ প্রস্থান করুন যদি SearchRange1.Count <> TextRange.Count বা SearchRange2.Count <> TextRange.Count তারপর MergeIfs = CVErr(xlErrRef) প্রস্থান ফাংশন শেষ হলে 'সমস্ত কক্ষের মধ্য দিয়ে যান, সমস্ত শর্ত চেক করুন এবং টেক্সট সংগ্রহ করুন আউটটেক্সট ফর i = 1 থেকে SearchRange1.Cells.Count যদি SearchRange1.Cells(i) = Condition1 এবং SearchRange2.Cells(i) = শর্ত2 তারপর OutText = OutText & TextRange.Cells(i) & Delimeter End If Next i 'শেষ ডিলিমিটার ছাড়াই ফলাফল প্রদর্শন করুন MergeIfs = Left(OutText, Len(OutText) - Len(Delimeter)) শেষ ফাংশন  

এটি ঠিক একইভাবে প্রয়োগ করা হবে - শুধুমাত্র আর্গুমেন্টগুলিকে এখন আরও নির্দিষ্ট করতে হবে:

শর্ত দ্বারা পাঠ্য বন্ধন

পদ্ধতি 4. পাওয়ার কোয়েরিতে গ্রুপিং এবং গ্লুইং

আপনি যদি বিনামূল্যে পাওয়ার কোয়েরি অ্যাড-ইন ব্যবহার করেন তবে আপনি VBA-তে প্রোগ্রামিং ছাড়াই সমস্যার সমাধান করতে পারেন। এক্সেল 2010-2013 এর জন্য এটি এখানে ডাউনলোড করা যেতে পারে এবং এক্সেল 2016-এ এটি ইতিমধ্যেই ডিফল্টরূপে তৈরি করা আছে। কর্মের ক্রম নিম্নরূপ হবে:

পাওয়ার কোয়েরি নিয়মিত টেবিলের সাথে কীভাবে কাজ করতে হয় তা জানে না, তাই প্রথম পদক্ষেপটি হল আমাদের টেবিলটিকে একটি "স্মার্ট" তে পরিণত করা৷ এটি করতে, এটি নির্বাচন করুন এবং সমন্বয় টিপুন জন্য ctrl+T অথবা ট্যাব থেকে নির্বাচন করুন হোম - একটি টেবিল হিসাবে বিন্যাস (হোম - টেবিল হিসাবে ফর্ম্যাট). যে ট্যাবে তারপর প্রদর্শিত হবে রচয়িতা (নকশা) আপনি টেবিলের নাম সেট করতে পারেন (আমি স্ট্যান্ডার্ড ছেড়েছি ছক 1):

শর্ত দ্বারা পাঠ্য বন্ধন

এখন পাওয়ার কোয়েরি অ্যাড-ইন-এ আমাদের টেবিল লোড করা যাক। এটি করতে, ট্যাবে উপাত্ত (যদি আপনার এক্সেল 2016 থাকে) অথবা পাওয়ার কোয়েরি ট্যাবে (যদি আপনার এক্সেল 2010-2013 থাকে) ক্লিক করুন টেবিল থেকে (ডেটা — টেবিল থেকে):

শর্ত দ্বারা পাঠ্য বন্ধন

খোলে ক্যোয়ারী এডিটর উইন্ডোতে, হেডারে ক্লিক করে কলামটি নির্বাচন করুন কোম্পানির এবং উপরের বোতাম টিপুন গ্রুপ (গ্রুপ দ্বারা). গ্রুপিং-এ নতুন কলামের নাম এবং অপারেশনের ধরন লিখুন - সব লাইন (সমস্ত সারি):

শর্ত দ্বারা পাঠ্য বন্ধন

ঠিক আছে ক্লিক করুন এবং আমরা প্রতিটি কোম্পানির জন্য গ্রুপ করা মানগুলির একটি মিনি-টেবিল পাই। টেবিলের বিষয়বস্তু স্পষ্টভাবে দৃশ্যমান হয় যদি আপনি ফলাফল কলামে ঘরের সাদা পটভূমিতে (টেক্সটে নয়!) বাম-ক্লিক করেন:

শর্ত দ্বারা পাঠ্য বন্ধন

এখন আরও একটি কলাম যোগ করা যাক, যেখানে, ফাংশন ব্যবহার করে, আমরা প্রতিটি মিনি-টেবিলে ঠিকানা কলামের বিষয়বস্তুগুলিকে কমা দ্বারা আলাদা করে আঠা দিয়ে রাখি। এটি করতে, ট্যাবে কলাম যুক্ত করুন আমরা টিপুন কাস্টম কলাম (কলাম যোগ করুন — কাস্টম কলাম) এবং যে উইন্ডোটি প্রদর্শিত হবে, সেখানে নতুন কলামের নাম এবং পাওয়ার কোয়েরিতে নির্মিত এম ভাষাতে কাপলিং সূত্র লিখুন:

শর্ত দ্বারা পাঠ্য বন্ধন

মনে রাখবেন যে সমস্ত এম-ফাংশন কেস সংবেদনশীল (এক্সেলের বিপরীতে)। ক্লিক করার পর OK আমরা আঠালো ঠিকানা সহ একটি নতুন কলাম পাই:

শর্ত দ্বারা পাঠ্য বন্ধন

এটি ইতিমধ্যে অপ্রয়োজনীয় কলাম অপসারণ অবশেষ টেবিল ঠিকানা (শিরোনামে ডান ক্লিক করুন) কলাম মুছুন) এবং ট্যাবে ক্লিক করে শীটে ফলাফল আপলোড করুন হোম - বন্ধ করুন এবং ডাউনলোড করুন (বাড়ি — বন্ধ এবং লোড):

শর্ত দ্বারা পাঠ্য বন্ধন

গুরুত্বপূর্ণ সূক্ষ্মতা: পূর্ববর্তী পদ্ধতি (ফাংশন) থেকে ভিন্ন, পাওয়ার কোয়েরি থেকে টেবিল স্বয়ংক্রিয়ভাবে আপডেট হয় না। যদি ভবিষ্যতে উত্স ডেটাতে কোনও পরিবর্তন হয় তবে আপনাকে ফলাফল টেবিলের যে কোনও জায়গায় ডান-ক্লিক করতে হবে এবং কমান্ডটি নির্বাচন করতে হবে আপডেট এবং সংরক্ষণ করুন (রিফ্রেশ).

  • কিভাবে একটি দীর্ঘ টেক্সট স্ট্রিং অংশে বিভক্ত করা যায়
  • বিভিন্ন কক্ষ থেকে একের মধ্যে পাঠ্য আঠালো করার বিভিন্ন উপায়
  • একটি মুখোশের বিরুদ্ধে পাঠ্য পরীক্ষা করতে লাইক অপারেটর ব্যবহার করে

নির্দেশিকা সমন্ধে মতামত দিন