এক্সেলের অটোফিল্টার ফিচার নির্দিষ্ট শর্ত অনুযায়ী ডেটা বের করার জন্য খুবই কার্যকর। কিন্তু কখনো কখনো টেকনিক্যাল সমস্যায়, অটোফিল্টার লুকিয়ে যায় অথবা ফিল্টার না থাকেও এক্সেল দেখায় যে ফিল্টার আছে। সেক্ষেত্রে, এক্সেল ওয়ার্কশিটে অটোফিল্টার সক্রিয় কিনা তা বুঝা প্রায় অসম্ভব হয়। VBA প্রয়োগ এক্সেলে যেকোনো অপারেশন চালানোর সবচেয়ে কার্যকর, দ্রুত এবং নিরাপদ পদ্ধতি। এই আর্টিকেলে, আমরা আপনাকে VBA ম্যাক্রো ব্যবহার করে এক্সেলে অটোফিল্টার অন কিনা তা যাচাই করার ৪টি সহজ ও দ্রুত পদ্ধতি দেখাব।
আপনি এখান থেকে ফ্রি প্র্যাকটিস এক্সেল ওয়ার্কবুক ডাউনলোড করতে পারেন।
এই অংশ অনুসরণ করলে, আপনি শিখবেন এক্সেলে VBA দিয়ে অটোফিল্টার অন কিনা যাচাই করার ৪টি ভিন্ন পদ্ধতি।
এই সেকশনে, আপনি শিখবেন VBA দিয়ে এক্সেল ওয়ার্কশিটে অটোফিল্টার অন কিনা যাচাই করা। এক্সিকিউশনের ধাপগুলো নিচে দেওয়া হলো।
ধাপসমূহ:
- শুরুতে, আপনার কীবোর্ডে Alt + F11 চাপুন অথবা ডেভেলপার -> ভিজ্যুয়াল বেসিক ট্যাবে যান ভিজ্যুয়াল বেসিক এডিটর খোলার জন্য।
- এরপর, পপ-আপ কোড উইন্ডোতে, মেনু বার থেকে, ইনসার্ট -> মডিউল ক্লিক করুন।
- তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub AutoFilterCheck() If ActiveSheet.AutoFilterMode = True Then MsgBox "Auto Filter is turned on" Else MsgBox "Auto Filter is turned off" End If End Sub
আপনার কোড এখন রান করার জন্য প্রস্তুত।
- এখন, আপনার কীবোর্ডে F5 চাপুন অথবা মেনু বার থেকে Run -> Run Sub/UserForm নির্বাচন করুন। আপনি সাব-মেনু বারের ছোট Run আইকন-এ ক্লিক করেও ম্যাক্রো রান করতে পারেন।
সফল কোড এক্সিকিউশনের পর, ফলাফল চেক করতে নিচের ছবিটি দেখুন।
উপরের ছবিটি দেখুন। ডেটাসেটে ফিল্টার আروز নেই বলেও, এক্সেল MsgBox আমাদের বলছে যে এই শিটে অটোফিল্টার অন আছে।
VBA প্রয়োগ এই ধরনের পরিস্থিতিতে খুবই সুবিধাজনক যেখানে কোনো অপারেশন নিয়ে অনিশ্চয়তা থাকে; VBA ম্যাক্রো আপনাকে সঠিক ফলাফল বের করতে সাহায্য করে এমনকি যখন আপনার চোখ সেটি দেখতে পারে না।
VBA কোড ব্যাখ্যা
If ActiveSheet.AutoFilterMode = True Then MsgBox "Auto Filter is turned on" Else MsgBox "Auto Filter is turned off" End If
এই কোডটুকু বোঝায় যদি এক্টিভ শিটের জন্য অটো ফিল্টার মোড ট্রু হয়, তবে এক্সেল MsgBox-এ "Auto Filter is turned on" মেসেজ ফেরত দেয়; অন্যথায়, "Auto Filter is turned off" মেসেজ ফেলে।
এই সেকশনটি আপনাকে দেখাবে কিভাবে আপনি কোড ডিবাগ করে একটি এক্সেল শিটে কতগুলো অটোফিল্টার আছে তা কাউন্ট করতে পারেন। কোড এক্সিকিউট করার পর, ফলাফল এক্সেল VBA-র ইমিডিয়েট উইন্ডো-এ দেখাবে।
এটি পাওয়ার ধাপগুলো নিচে দেওয়া হলো।
ধাপসমূহ:
- পূর্বের মতো, ডেভেলপার ট্যাব থেকে ভিজ্যুয়াল বেসিক এডিটর খুলুন এবং কোড উইন্ডোতে একটি মডিউল ইনসার্ট করুন।
- তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub CountAutoFilters() Dim iCount As Long If ActiveSheet.AutoFilterMode = True Then iCount = 1 Debug.Print "AutoFilterMode Count: " & iCount End Sub
আপনার কোড এখন রান করার জন্য প্রস্তুত।
- এরপর, Run করুন ম্যাক্রোটি উপরের সেকশনে দেখানো মতো। ফলাফল নিচের ছবিতে দেখানো হয়েছে।
উপরের ছবিতে দেখতে পাচ্ছেন, ইমিডিয়েট উইন্ডো-এ আপনি আপনার ওয়ার্কশিটে সক্রিয় অটোফিল্টারের মোট কাউন্ট পাবেন।
VBA কোড ব্যাখ্যা
Dim iCount As Long
ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।
If ActiveSheet.AutoFilterMode = True Then iCount = 1 Debug.Print "AutoFilterMode Count: " & iCount
কোডের এই দুটি লাইন বোঝায়, যদি এক্টিভ শিটের জন্য অটো ফিল্টার মোড ট্রু হয়, তবে কাউন্ট শুরু করুন এবং মোট কাউন্ট প্রিন্ট করুন।
মান लीজিয়ে আপনি চান আপনার এক্সেল স্প্রেডশিটের এক নির্দিষ্ট কলাম VBA দিয়ে ফিল্টার করা হয়েছে কিনা তা যাচাই करना।
চলুন দেখি কীভাবে করতে হয়।
ধাপসমূহ:
- পূর্বে দেখানো মতো, ডেভেলপার ট্যাব থেকে ভিজ্যুয়াল বেসিক এডিটর খুলুন এবং কোড উইন্ডোতে একটি মডিউল ইনসার্ট করুন।
- তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub CheckColumnFilter() Dim iSheet As Worksheet Set iSheet = ActiveSheet If iSheet.AutoFilter.Filters(2).On Then MsgBox "Column B is filtered." Else MsgBox "Column B is not filtered." End If End Sub
আপনার কোড এখন রান করার জন্য প্রস্তুত।
- পরে, Run করুন ম্যাক্রোটি এবং আউটপুট দেখতে নিচের ছবিটি দেখুন।
উপরের ছবিটি বিবেচনা করুন। যদিও আপনি দেখতে পাচ্ছেন কলাম B-এ ফিল্টার আروز আছে, ম্যাক্রোটি আমাদের বলছে যে সেটি নেই। তাই, সফল কোড এক্সিকিউশনের পর, আমরা বলতে পারি কলাম B অটোফিল্টার করা নয়।
VBA কোড ব্যাখ্যা
Dim iSheet As Worksheet
ওয়ার্কশিট-এর জন্য ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।
Set iSheet = ActiveSheet
সক্রিয় শিটটি ডিক্লেয়ার করা ভেরিয়েবলে সংরক্ষণ করা হয়েছে।
If iSheet.AutoFilter.Filters(2).On Then MsgBox "Column B is filtered." Else MsgBox "Column B is not filtered." End If
এই কোডটুকু বোঝায় যদি এক্টিভ শিটের জন্য কলাম ২ বা কলাম B-র অটো ফিল্টার ট্রু হয়, তবে এক্সেল MsgBox-এ "Column B is filtered." মেসেজ ফেরত দেয়; অন্যথায়, "Column B is not filtered." মেসেজ ফেলে।
এই সেকশনে, আপনি শিখবেন কিভাবে আপনি একটি নির্দিষ্ট এক্সেল ওয়ার্কবুকের একটি শিটের জন্য সক্রিয় বা নিষ্ক্রিয় অটোফিল্টার যাচাই করতে পারেন।
এکسিকিউশনের ধাপগুলো নিচে দেওয়া হলো।
ধাপসমূহ:
- প্রথমে, ডেভেলপার ট্যাব থেকে ভিজ্যুয়াল বেসিক এডিটর খুলুন এবং কোড উইন্ডোতে একটি মডিউল ইনসার্ট করুন।
- তারপর, নিচের কোডটি কপি করে কোড উইন্ডোতে পেস্ট করুন।
Sub CheckAutofilterSheet() Dim z As Double For z = 1 To ThisWorkbook.Sheets.Count If ThisWorkbook.Sheets(z).AutoFilterMode Then MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter" End If Next End Sub
আপনার কোড এখন রান করার জন্য প্রস্তুত।
- এরপর, Run করুন ম্যাক্রোটি। এখন, ফলাফল দেখতে নিচের ছবিটি দেখুন।
উপরের ছবিতে দেখতে পাচ্ছেন, আমাদের ওয়ার্কবুকে "Dataset" নামে একটি ওয়ার্কশিট আছে। এক্সেলের MsgBox আমাদের দেখাচ্ছে যে "Dataset" শিটে অটোফিল্টার অন আছে। আপনি একটি নির্দিষ্ট এক্সেল ওয়ার্কবুকের সকল স্প্রেডশিটের জন্য এই কোডটি প্রয়োগ করতে পারেন।
VBA কোড ব্যাখ্যা
Dim z As Double
ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।
For z = 1 To ThisWorkbook.Sheets.Count
মौজূদা ওয়ার্কবুকের ১ নম্বর শিট থেকে মোট শিট কাউন্ট-এর পর্যόν্ত লুপিং শুরু হয়েছে।
If ThisWorkbook.Sheets(z).AutoFilterMode Then MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter" End If Next
যদি প্রথম শিটে অটো ফিল্টার মোড অন থাকে, তবে MsgBox-এ মেসেজ ফেলুন। তারপর, কোড শর্তটি শেষ করে পরবর্তী শিটে চলে যায় ইটারেশন করার জন্য। এটি এভাবে চলতে থাকে যতক্ষণ না বর্তমান ওয়ার্কবুকের সকল শিট কাউন্ট-এ পৌঁছায়।
চূড়ান্তভাবে, এই আর্টিকেলে আপনাকে VBA ম্যাক্রো দিয়ে এক্সেলে অটোফিল্টার অন কিনা যাচাই করার ৪টি সহজ ও দ্রুত পদ্ধতি দেখানো হয়েছে। আশা করি এই আর্টিকেলটি আপনার জন্য খুব উপকারী হবে। বিষয়টি নিয়ে যেকোনো প্রশ্ন থাকলে বাধা না মনে করুন।
- [সমাধান]: অটোফিল্টার মেথড অফ রেঞ্জ ক্লাস ফেলড (৫টি সমাধান)
- VBA অটোফিল্টার: স্মলেস্ট টু লার্জেস্ট সর্ট (৩টি পদ্ধতি)