এই নিবন্ধে, আমি আপনাকে দেখাব কিভাবে আপনি 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 সহ নির্দিষ্ট মানের সমান নয় অটোফিল্টার মানগুলির জন্য 2 উপযুক্ত পদ্ধতি
আর দেরি না করে চলুন আজকের মূল আলোচনায় যাই। প্রথমে, আমরা একটি সম্পূর্ণ ওয়ার্কশীট থেকে মানগুলি স্বয়ংক্রিয়ভাবে ফিল্টার করব এবং তারপরে একটি ওয়ার্কশীটের একটি নির্দিষ্ট পরিসর থেকে।
1. অটোফিল্টার মান যা সম্পূর্ণ ওয়ার্কশীট থেকে একটি নির্দিষ্ট মানের সমান নয়
প্রথমত, আমরা Excel VBA এর সাথে একটি সম্পূর্ণ ওয়ার্কশীট থেকে একটি নির্দিষ্ট মানের সমান নয় এমন মানগুলি অটোফিল্টার করতে শিখব। .
এখানে আমি Sheet1 নামে একটি ওয়ার্কশীট পেয়েছি যেটিতে কিছু ছাত্রের নাম রয়েছে , তাদের চিহ্ন একটি পরীক্ষায়, এবং তাদের গ্রেড . ডেটা সেটটি সরাসরি সেল A1 থেকে শুরু হয় .
আমাদের উদ্দেশ্য হল F-এর সমান নয় এমন গ্রেড পাওয়া শিক্ষার্থীদের স্বতঃফিল্টার করা Sheet2 নামক ওয়ার্কশীটে .
⧪ ধাপ 1:ইনপুট সন্নিবেশ করান
প্রথমত, আপনাকে কোডটিতে ইনপুটগুলি সন্নিবেশ করতে হবে। এর মধ্যে রয়েছে উৎস ওয়ার্কশীট (শীট1) এর নাম , গন্তব্য ওয়ার্কশীট (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"
⧪ ধাপ 2:একটি ফর-লুপ দিয়ে মানগুলি স্বয়ংক্রিয়ভাবে ফিল্টার করা
এর পরে, আমরা ফর-লুপ এর মাধ্যমে পুনরাবৃত্তি করে উৎস ওয়ার্কশীট থেকে গন্তব্য ওয়ার্কশীটে মানগুলি স্বয়ংক্রিয়ভাবে ফিল্টার করব .
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
⧭ আউটপুট:
আপনার প্রয়োজন অনুযায়ী ইনপুটগুলি পরিবর্তন করুন, এবং তারপর কোড চালান (প্রথমে শিট2 নামে একটি নতুন ওয়ার্কশীট তৈরি করুন , অথবা আপনার গন্তব্য ওয়ার্কশীট হিসাবে কিছু , তারপর কোড চালান। অন্যথায়, এটি একটি ত্রুটি দেখাবে।)।
আপনি আপনার ডেটা সেটের নির্দিষ্ট কলাম পাবেন (কলাম 1 এবং 3 এই উদাহরণে) গন্তব্য ওয়ার্কশীটে স্বয়ংক্রিয়ভাবে ফিল্টার করা হয়েছে শুধুমাত্র এমন মান রয়েছে যা নির্দিষ্ট মানের সমান নয় (F এই উদাহরণে)।
আরো পড়ুন: এক্সেলের একই ক্ষেত্রে একাধিক মাপকাঠি সহ VBA থেকে স্বয়ংক্রিয় ফিল্টার (4টি পদ্ধতি)
2. অটোফিল্টার মান যা Excel VBA এর সাথে একটি নির্দিষ্ট পরিসরের সেল থেকে একটি নির্দিষ্ট মানের সমান নয়
আমরা Excel VBA-এ সম্পূর্ণ ওয়ার্কশীট থেকে একটি নির্দিষ্ট মানের সমান নয় এমন মানগুলিকে স্বয়ংক্রিয়ভাবে ফিল্টার করতে শিখেছি .
এখন আমরা একটি নির্দিষ্ট পরিসর থেকে মান অটোফিল্টার করতে শিখব।
এখানে আমি Sheet3 নামে একটি ওয়ার্কশীট পেয়েছি যেটিতে আবার কিছু ছাত্রের নাম রয়েছে , তাদের চিহ্ন একটি পরীক্ষায়, এবং তাদের গ্রেড . কিন্তু এবার ডেটা সেটটি সেল B3 থেকে শুরু হয় সেল D15 পর্যন্ত .
এইবার আমাদের উদ্দেশ্য হল F এর সমান নয় এমন গ্রেড পাওয়া ছাত্রদের অটোফিল্টার করা একই ওয়ার্কশীটে, ঘরে F3 .
⧪ ধাপ 1:ইনপুট সন্নিবেশ করান
প্রথমত, আপনাকে কোডটিতে ইনপুটগুলি সন্নিবেশ করতে হবে। এইবার এটি সোর্স ওয়ার্কশীট (Sheet3) এর নাম অন্তর্ভুক্ত করবে৷ , গন্তব্য ওয়ার্কশীট (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"
⧪ ধাপ 2:একটি ফর-লুপ দিয়ে মানগুলি স্বয়ংক্রিয়ভাবে ফিল্টার করা
এর পরে, আমরা ফর-লুপ এর মাধ্যমে পুনরাবৃত্তি করে মানগুলি স্বয়ংক্রিয়ভাবে ফিল্টার করব .
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
⧭ আউটপুট:
ইনপুট পরিবর্তন করার পরে কোডটি চালান (গন্তব্য ওয়ার্কশীট তৈরি করতে ভুলবেন না প্রথমে যদি এটি একটি ভিন্ন হয়, অন্যথায় আপনি ত্রুটির সম্মুখীন হবেন।)।
আপনি আপনার ডেটা সেটের নির্দিষ্ট কলাম পাবেন (কলাম 1 এবং 3 এই উদাহরণে) গন্তব্য কক্ষে স্বয়ংক্রিয়ভাবে ফিল্টার করা হয়েছে (F3 এই উদাহরণে) গন্তব্য ওয়ার্কশীটের শুধুমাত্র এমন মান রয়েছে যা নির্দিষ্ট মানের সমান নয় (F এই উদাহরণে)।
আরো পড়ুন: [ফিক্স]:রেঞ্জ ক্লাসের অটোফিল্টার পদ্ধতি ব্যর্থ (5টি সমাধান)
মনে রাখার মতো বিষয়গুলি৷
একটি নতুন ওয়ার্কশীটে মান অটোফিল্টার করার জন্য কোড চালানোর আগে, সেই ওয়ার্কশীটটি তৈরি করুন। অন্যথায়, আপনি ত্রুটি অনুভব করবেন।
এছাড়াও, এখানে আমরা UsedRange ব্যবহার করেছি VBA এর সম্পত্তি সম্পূর্ণ ওয়ার্কশীট থেকে স্বয়ংক্রিয় ফিল্টার মান। এটি সম্পর্কে বিস্তারিত জানতে এটিতে ক্লিক করুন৷
উপসংহার
সুতরাং, VBA ব্যবহার করে একটি নির্দিষ্ট মানের সমান নয় এমন মান অটোফিল্টার করার উপায় এখানে দেওয়া হল। এক্সেলে। আপনি কি কিছু জানতে চান? আমাদের জিজ্ঞাসা নির্দ্বিধায়. এবং আমাদের সাইট ExcelDemy দেখতে ভুলবেন না আরো পোস্ট এবং আপডেটের জন্য।
সম্পর্কিত প্রবন্ধ
- অটোফিল্টার চালু আছে কিনা তা পরীক্ষা করতে এক্সেল VBA (4টি সহজ উপায়)
- VBA অটোফিল্টার:সবচেয়ে ছোট থেকে বড় (3টি পদ্ধতি) সাজান
- এক্সেল VBA এর মাধ্যমে কিভাবে অটোফিল্টার এবং দৃশ্যমান সারি কপি করবেন
- এক্সেল ভিবিএ:অটোফিল্টার সরান যদি এটি থাকে (7 উপায়)