কম্পিউটার টিউটোরিয়াল

VBA অটোফিল্টার মাস্টার করুন: এক্সেল রেঞ্জ থেকে নির্দিষ্ট মান বাদ দিন

এই আর্টিকেলে, আমি আপনাকে দেখাব কিভাবে আপনি VBA দিয়ে এক্সেলে একটি নির্দিষ্ট মানের সমান নয় এমন মানগুলো অটোফিল্টার করতে পারেন। আপনি সেলের একটি নির্বাচিত রেঞ্জ থেকে এবং পুরো ওয়ার্কশিট থেকেও মানগুলো ফিল্টার করতে শিখবেন।

VBA দিয়ে নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করুন (দ্রুত দৃষ্টি)

Sub Autofilter_Values_from_Whole_Worksheet() Source_Worksheet = "Sheet1" Destination_Worksheet = "Sheet2" Dim Filtered_Columns() As Variant Filtered_Columns = Array(1, 3) Value_Column = 3 Value = "F" Row_Count = 1 Column_Count = 1 For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then For j = LBound(Filtered_Columns) To UBound(Filtered_Columns) Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j)) Column_Count = Column_Count + 1 Next j Row_Count = Row_Count + 1 Column_Count = 1 End If Next i End Sub
এক্সেলে VBA দিয়ে নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করার ২টি উপযুক্ত পদ্ধতি

বिना দেরি কिये আজকের আমাদের মূল আলোচনায় যাই। প্রথমে, আমরা পুরো ওয়ার্কশিট থেকে মান ফিল্টার করব, তারপর একটি ওয়ার্কশিটের নির্দিষ্ট রেঞ্জ থেকে।

১. পুরো ওয়ার্কশিট থেকে নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করুন

প্রথমে, আমরা এক্সেল VBA দিয়ে পুরো একটি ওয়ার্কশিট থেকে নির্দিষ্ট মানের সমান নয় এমন মানগুলো অটোফিল্টার করতে শিখব।

এখানে আমার একটি ওয়ার্কশিট আছে যার নাম Sheet1 যাতে কিছু ছাত্রের নাম, পরীক্ষার তাদের নম্বর এবং তাদের গ্রেড রয়েছে। ডেটা সেটটি সেল A1-থেকে শুরু হয়েছে।

আমাদের উদ্দেশ্য হলো Sheet2 নামক ওয়ার্কশিটে F গ্রেডের সমান নয় এমন ছাত্রদের অটোফিল্টার করা।

⧪ ধাপ ১: ইনপুট গুলো ইনসার্ট করুন

প্রথমে, আপনাকে কোডে ইনপুটগুলো ইনসার্ট করতে হবে। এতে থাকে সোর্স ওয়ার্কশিট (Sheet1), ডেস্টিনেশন ওয়ার্কশিট (Sheet2), ফিল্টার করা কলামগুলো (1, 3), নির্দিষ্ট মানવાળা কলাম (3), এবং নির্দিষ্ট মান (F)।

Source_Worksheet = "Sheet1" Destination_Worksheet = "Sheet2" Dim Filtered_Columns() As Variant Filtered_Columns = Array(1, 3) Value_Column = 3 Value = "F"

⧪ ধাপ ২: ফর-লুপ দিয়ে মানগুলো অটোফিল্টার করুন

এরপর, আমরা একটি for-loop এর মাধ্যমে সোর্স ওয়ার্কশিট থেকে ডেস্টিনেশন ওয়ার্কশিটে মানগুলো অটোফিল্টার করব।

Row_Count = 1 Column_Count = 1 For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then For j = LBound(Filtered_Columns) To UBound(Filtered_Columns) Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j)) Column_Count = Column_Count + 1 Next j Row_Count = Row_Count + 1 Column_Count = 1 End If Next i

তাই, সম্পূর্ণ VBA কোডটি হবে:

⧭ VBA কোড:

Sub Autofilter_Values_from_Whole_Worksheet() Source_Worksheet = "Sheet1" Destination_Worksheet = "Sheet2" Dim Filtered_Columns() As Variant Filtered_Columns = Array(1, 3) Value_Column = 3 Value = "F" Row_Count = 1 Column_Count = 1 For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then For j = LBound(Filtered_Columns) To UBound(Filtered_Columns) Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j)) Column_Count = Column_Count + 1 Next j Row_Count = Row_Count + 1 Column_Count = 1 End If Next i End Sub

⧭ আউটপুট:

আপনার প্রয়োজন অনুযায়ী ইনপুটগুলো পরিবর্তন করুন, এবং কোডটি রান করুন (প্রথমে Sheet2 নামে একটি নতুন ওয়ার্কশিট তৈরি করুন, অথবা আপনার ডেস্টিনেশন ওয়ার্কশিট যা ইচ্ছা, তারপর কোডটি রান করুন। অন্যথায়, এটা এরর দেখাবে।)।

আপনি আপনার ডেটা সেটের নির্দিষ্ট কলামগুলো (এই উদাহরণে কলাম ১ এবং ৩) অটো ফিল্টার হয়ে ডেস্টিনেশন ওয়ার্কশিটে চলে যাবে যাতে শুধু নির্দিষ্ট মানের (এই উদাহরণে F) সমান নয় এমন মানগুলো থাকে।

২. এক্সেল VBA দিয়ে নির্দিষ্ট সেল রেঞ্জ থেকে নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করুন

আমরা এক্সেল VBA-তে পুরো ওয়ার্কশিট থেকে নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করা শিখেছি।

এখন আমরা একটি নির্দিষ্ট রেঞ্জ থেকে মান ফিল্টার করতে শিখব।

এখানে আমার একটি ওয়ার্কশিট আছে যার নাম Sheet3 যাতে আবার কিছু ছাত্রের নাম, পরীক্ষার তাদের নম্বর এবং তাদের গ্রেড রয়েছে। কিন্তু এই বার ডেটা সেটটি সেল B3 থেকে শুরু হয়ে সেল D15-এ শেষ হয়।

এইবার আমাদের উদ্দেশ্য হলো একই ওয়ার্কশিটে, সেল F3-এ F গ্রেডের সমান নয় এমন ছাত্রদের অটোফিল্টার করা।

⧪ ধাপ ১: ইনপুট গুলো ইনসার্ট করুন

প্রথমে, আপনাকে কোডে ইনপুটগুলো ইনসার্ট করতে হবে। এইবার এতে থাকবে সোর্স ওয়ার্কশিট (Sheet3), সোর্স রেঞ্জ (B3:D15), ডেস্টিনেশন ওয়ার্কশিট (Sheet3), ডেস্টিনেশন সেল (F3), ফিল্টার করা কলামগুলো (1, 3), নির্দিষ্ট মানওয়ালা কলাম (3), এবং নির্দিষ্ট মান (F)।

Source_Worksheet = "Sheet3" Source_Range = "B3:D15" Destination_Worksheet = "Sheet3" Destination_Cell = "F3" Dim Filtered_Columns() As Variant Filtered_Columns = Array(1, 3) Value_Column = 3 Value = "F"

⧪ ধাপ ২: ফর-লুপ দিয়ে মানগুলো অটোফিল্টার করুন

এরপর, আমরা একটি for-loop এর মাধ্যমে মানগুলো অটোফিল্টার করব।

Row_Count = 1 Column_Count = 1 For i = 1 To Worksheets(Source_Worksheet).Range(Source_Range).Rows.Count If Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Value_Column) <> Value Then For j = LBound(Filtered_Columns) To UBound(Filtered_Columns) Worksheets(Destination_Worksheet).Range(Destination_Cell).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Filtered_Columns(j)) Column_Count = Column_Count + 1 Next j Row_Count = Row_Count + 1 Column_Count = 1 End If Next i

তাই, সম্পূর্ণ VBA কোডটি হবে:

⧭ VBA কোড:

Sub Autofilter_Values_from_Specific_Range() Source_Worksheet = "Sheet3" Source_Range = "B3:D15" Destination_Worksheet = "Sheet3" Destination_Cell = "F3" Dim Filtered_Columns() As Variant Filtered_Columns = Array(1, 3) Value_Column = 3 Value = "F" Row_Count = 1 Column_Count = 1 For i = 1 To Worksheets(Source_Worksheet).Range(Source_Range).Rows.Count If Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Value_Column) <> Value Then For j = LBound(Filtered_Columns) To UBound(Filtered_Columns) Worksheets(Destination_Worksheet).Range(Destination_Cell).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Filtered_Columns(j)) Column_Count = Column_Count + 1 Next j Row_Count = Row_Count + 1 Column_Count = 1 End If Next i End Sub

⧭ আউটপুট:

ইনপুটগুলো পরিবর্তন করে কোডটি রান করুন (যদি ডেস্টিনেশন ওয়ার্কশিট আলাদা হয়, তবে সেটি আগে তৈরি করতে ভুলবেন না, অন্যথায় আপনি এরর সম্মুখীন হবেন।)।

আপনি আপনার ডেটা সেটের নির্দিষ্ট কলামগুলো (এই উদাহরণে কলাম ১ এবং ৩) অটো ফিল্টার হয়ে ডেস্টিনেশন ওয়ার্কশিটের ডেস্টিনেশন সেলে (এই উদাহরণে F3) চলে যাবে যাতে শুধু নির্দিষ্ট মানের (এই উদাহরণে F) সমান নয় এমন মানগুলো থাকে।

স্মরণিয় বিষয়গুলো

নতুন ওয়ার্কশিটে মান ফিল্টার করার কোড রান করার আগে, সেই ওয়ার্কশিটটি তৈরি করুন। অন্যথায়, আপনি এরর সম্মুখীন হবেন।

এছাড়া, এখানে আমরা পুরো ওয়ার্কশিট থেকে মান অটোফিল্টার করতে VBA-র UsedRange প্রোপার্টি ব্যবহার করেছি। এ সম্পর্কে বিস্তারিত জানতে এতে ক্লিক করুন।

উপসংহার

তাহলে, এখানে হলো এক্সেলে VBA ব্যবহার করে নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করার পদ্ধতিগুলো। আপনার যেকোনো প্রশ্ন থাকলে, আমাদের থেকে জিজ্ঞেস করতে মনোশ করবেন না। এবং আরও পোস্ট ও আপডেটের জন্য আমাদের সাইট ExcelDemy ভিজিট করতে ভুলবেন না।

সম্পর্কিত আর্টিকেলগুলো
  • এক্সেল VBA দিয়ে অটোফিল্টার অন কিনা যাচাই (৪টি সহজ পদ্ধতি)
  • VBA অটোফিল্টার: স্মলেস্ট টু লার্জেস্ট সর্ট (৩টি পদ্ধতি)
  • এক্সেল VBA দিয়ে অটোফিল্টার এবং ভিজিবল সারি কপি করুন
  • এক্সেল VBA: অটোফিল্টার রিমুভ যদি অস্তিত্বে থাকে (৭টি পদ্ধতি)
  1. এক্সেল ভিবিএ-এ ডেটা এন্ট্রি ফর্ম তৈরি করুন – ধাপে ধাপে গাইড

  2. এক্সেলে ডুপ্লিকেট ভ্যালু থাকলেও রিলেশনশিপ তৈরি: ধাপে ধাপে গাইড

  3. এক্সেলে নির্দিষ্ট মান ধারণকারী সেল সরানোর ২ দ্রুত টেকনিক

  4. এক্সেল মাস্টার করুন: মান নির্দিষ্ট সীমা লাঙ্ঘি না করতে ফর্মুলা ব্যবহার