এই আর্টিকেলে, আমি আপনাকে দেখাব কিভাবে আপনি 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 দিয়ে পুরো একটি ওয়ার্কশিট থেকে নির্দিষ্ট মানের সমান নয় এমন মানগুলো অটোফিল্টার করতে শিখব।
এখানে আমার একটি ওয়ার্কশিট আছে যার নাম 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-তে পুরো ওয়ার্কশিট থেকে নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করা শিখেছি।
এখন আমরা একটি নির্দিষ্ট রেঞ্জ থেকে মান ফিল্টার করতে শিখব।
এখানে আমার একটি ওয়ার্কশিট আছে যার নাম 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: অটোফিল্টার রিমুভ যদি অস্তিত্বে থাকে (৭টি পদ্ধতি)