इस लेख में, मैं आपको दिखाऊंगा कि आप 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 Excel में VBA के साथ एक निश्चित मान के बराबर नहीं मानों को स्वतः फ़िल्टर करने के लिए उपयुक्त तरीके
बिना देर किए चलिए आज की अपनी मुख्य चर्चा पर चलते हैं। सबसे पहले, हम संपूर्ण कार्यपत्रक से मानों को स्वतः फ़िल्टर करेंगे, और फिर किसी कार्यपत्रक की एक विशिष्ट श्रेणी से।
1. ऑटोफ़िल्टर मान जो संपूर्ण वर्कशीट से एक निश्चित मूल्य के बराबर नहीं हैं
सबसे पहले, हम एक्सेल VBA के साथ संपूर्ण वर्कशीट से उन मानों को ऑटोफिल्टर करना सीखेंगे जो एक निश्चित मान के बराबर नहीं हैं। ।
यहाँ मेरे पास Sheet1 . नामक एक वर्कशीट है जिसमें कुछ छात्रों के नाम . हैं , उनके अंक एक परीक्षा में, और उनका ग्रेड . डेटा सेट सीधे सेल A1 . से शुरू होता है ।
हमारा उद्देश्य उन छात्रों को ऑटोफिल्टर करना है जिन्हें F . के बराबर ग्रेड नहीं मिला है पत्रक2 . नामक कार्यपत्रक में ।
⧪ चरण 1:इनपुट सम्मिलित करना
सबसे पहले, आपको कोड में इनपुट डालना होगा। इसमें स्रोत कार्यपत्रक (पत्रक1) . का नाम शामिल है , गंतव्य कार्यपत्रक (पत्रक2) , कॉलम जिन्हें फ़िल्टर किया जाएगा (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 कोड होगा:
⧭ वीबीए कोड:
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 नामक एक नई वर्कशीट बनाएं। , या आपकी गंतव्य कार्यपत्रक . के रूप में कुछ भी , फिर कोड चलाएँ। अन्यथा, यह एक त्रुटि दिखाएगा।)
आपको अपने डेटा सेट के विशिष्ट कॉलम मिलेंगे (कॉलम 1 और 3 इस उदाहरण में) गंतव्य कार्यपत्रक में स्वतः फ़िल्टर किया गया जिसमें केवल वे मान शामिल हैं जो निश्चित मान के बराबर नहीं हैं (F इस उदाहरण में)।
और पढ़ें: VBA से Excel में समान फ़ील्ड पर एकाधिक मानदंड वाले ऑटोफ़िल्टर (4 तरीके)
2. ऑटोफ़िल्टर मान जो Excel VBA वाले कक्षों की एक विशिष्ट श्रेणी से एक निश्चित मान के बराबर नहीं हैं
हमने एक्सेल VBA में संपूर्ण वर्कशीट से उन मानों को ऑटोफिल्टर करना सीखा है जो एक निश्चित मान के बराबर नहीं हैं। ।
अब हम एक विशिष्ट श्रेणी के मानों को स्वतः फ़िल्टर करना सीखेंगे।
यहाँ मेरे पास Sheet3 . नामक एक वर्कशीट है जिसमें फिर से कुछ छात्रों के नाम . शामिल हैं , उनके अंक एक परीक्षा में, और उनका ग्रेड . लेकिन इस बार डेटा सेट सेल B3 . से शुरू होता है सेल तक D15 ।
इस बार हमारा उद्देश्य उन छात्रों को ऑटोफिल्टर करना है जिन्हें F . के बराबर ग्रेड नहीं मिला है उसी वर्कशीट में, सेल में F3 ।
⧪ चरण 1:इनपुट सम्मिलित करना
सबसे पहले, आपको कोड में इनपुट डालना होगा। इस बार इसमें सोर्स वर्कशीट (शीट 3) . का नाम शामिल होगा , गंतव्य वर्कशीट (शीट 3) , गंतव्य सेल (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 कोड होगा:
⧭ वीबीए कोड:
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 अधिक पोस्ट और अपडेट के लिए।
संबंधित लेख
- Excel VBA यह जांचने के लिए कि ऑटोफ़िल्टर चालू है या नहीं (4 आसान तरीके)
- VBA ऑटोफिल्टर:सबसे छोटे से सबसे बड़े तक छाँटें (3 तरीके)
- Excel VBA के साथ दृश्यमान पंक्तियों को ऑटोफ़िल्टर और कॉपी कैसे करें
- Excel VBA:मौजूद होने पर ऑटोफ़िल्टर निकालें (7 तरीके)