एक्सेल का स्वतः फ़िल्टर कुछ शर्तों के आधार पर डेटा निकालने के लिए सुविधा वास्तव में कुशल है। VBA लागू किया जा रहा है एक्सेल में किसी भी ऑपरेशन को चलाने के लिए सबसे प्रभावी, तेज और सबसे सुरक्षित तरीका है। इस लेख में, हम आपको एक ही फ़ील्ड (स्तंभ) पर एकाधिक मानदंडों के साथ स्वतः फ़िल्टर करने के लिए के 4 तरीके दिखाएंगे। एक्सेल में VBA मैक्रो . के साथ ।
कार्यपुस्तिका डाउनलोड करें
आप यहां से निःशुल्क अभ्यास एक्सेल वर्कबुक डाउनलोड कर सकते हैं।
एक्सेल में एक ही फ़ील्ड (कॉलम) पर एक से अधिक मानदंड वाले ऑटोफ़िल्टर के लिए VBA के साथ 4 तरीके
इस अनुभाग के बाद, आप सीखेंगे कि कैसे एकाधिक टेक्स्ट और संख्यात्मक मानों के साथ, AND ऑपरेटर और OR ऑपरेटर के साथ स्वतः फ़िल्टर करें उसी कॉलम पर एक्सेल में VBA . के साथ 4 अलग-अलग मानदंडों में।
1. एक ही कॉलम पर एकाधिक संख्यात्मक मानदंड वाले ऑटोफ़िल्टर में VBA एम्बेड करें
निम्नलिखित डेटासेट पर विचार करें। कॉलम बी कुछ रैंडम नंबर . से मिलकर बनता है , जबकि कॉलम D केवल विषम संख्याएं धारण करता है . हम यहां क्या करने जा रहे हैं, हम कॉलम डी में निहित मानदंडों के आधार पर कॉलम बी को फ़िल्टर करेंगे; इसका मतलब है, रैंडम नंबर (कॉलम बी ) विषम संख्याओं द्वारा फ़िल्टर किया जाएगा कॉलम D में रहने वाले नंबरों सहित और उनके बीच . के मानदंड के साथ ।
आइए देखें कि VBA . के साथ ऐसा कैसे करें एक्सेल में।
चरण:
- शुरुआत में, Alt + F11 दबाएं अपने कीबोर्ड पर या टैब पर जाएं डेवलपर -> विजुअल बेसिक विजुअल बेसिक संपादक खोलने के लिए ।
- अगला, पॉप-अप कोड विंडो में, मेनू बार से, सम्मिलित करें -> मॉड्यूल क्लिक करें ।
- फिर, प्रतिलिपि करें निम्नलिखित कोड और चिपकाएं इसे कोड विंडो में।
Sub AutoFilterWithMultipleCriteriaOnSameColumn()
Dim iArray As Variant
With ThisWorkbook.Worksheets("Column")
iArray = Split(Join(Application.Transpose(.Range(.Cells(5, 4), .Cells(.Range("D:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, 4)).Value)))
.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
End Sub
आपका कोड अब चलने के लिए तैयार है।
- अब, F5 दबाएं अपने कीबोर्ड पर या मेनू बार से चलाएं -> उप/उपयोगकर्ता प्रपत्र चलाएं . चुनें . आप बस छोटा रन आइकन . पर भी क्लिक कर सकते हैं उप-मेनू बार में मैक्रो चलाने के लिए।
सफल कोड निष्पादन के बाद, परिणाम देखने के लिए निम्न छवि देखें।
जैसा कि आप ऊपर की छवि से देख सकते हैं, स्तंभ B अब फ़िल्टर है केवल विषम संख्याओं . के साथ ।
आप सम संख्याओं . के आधार पर डेटा फ़िल्टर करने के लिए समान कोड निष्पादित कर सकते हैं . उस स्थिति में, आपको विषम संख्याओं के बजाय सम संख्याओं को दूसरे कॉलम में संग्रहीत करना होगा।
VBA कोड स्पष्टीकरण
Dim iArray As Variant
चर . को परिभाषित करें सरणी . के लिए ।
With ThisWorkbook.Worksheets("Column")
कार्यपत्रक का नाम घोषित करें ("कॉलम ” हमारे डेटासेट के लिए शीट का नाम है)। आपको अपने डेटासेट के अनुसार शीट का नाम लिखना होगा।
iArray = Split(Join(Application.Transpose(.Range(.Cells(5, 4), .Cells(.Range("D:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, 4)).Value)))
परिभाषित सरणी भरें संग्रहीत मानदंड . के साथ कॉलम डी सेल D5 . से प्रारंभ हो रहा है ।
.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
- फ़िल्टर कॉलम बी सेल B4 . से प्रारंभ होता है संग्रहीत अनेक मानदंड . के अनुसार परिभाषित सरणी . में ।
- उसके बाद, छोड़ देता है कार्यपत्रक ।
और पढ़ें: एक्सेल वीबीए यह जांचने के लिए कि ऑटोफिल्टर चालू है या नहीं (4 आसान तरीके)
2. एक्सेल में एक ही कॉलम पर ऑटोफिल्टर और ऑपरेटर के साथ वीबीए लागू करें
xlAND एक्सेल में ऑपरेटर दो मानदंडों के साथ काम करता है। यह वे मान लौटाता है जो दोनों मानदंडों को पूरा करते हैं ।
अब, निम्नलिखित डेटासेट पर विचार करें। कॉलम बी रैंडम नंबर, . से मिलकर बनता है और हमने दो शर्तों को D4:E5 की श्रेणी में डाला . शर्तें हैं कॉलम B फ़िल्टर . करना होगा उन संख्याओं के साथ जो 2 से अधिक या उसके बराबर . हैं (मान सेल E4 में संग्रहीत है ) और 9 से कम या उसके बराबर (मान सेल E5 में संग्रहीत है ) हम कॉलम B filter को फ़िल्टर करेंगे उन शर्तों के अनुसार AND ऑपरेटर . के साथ एक्सेल में VBA ।
इसे प्राप्त करने के चरण नीचे दिए गए हैं।
चरण:
- पहले की तरह ही, Visual Basic Editor खोलें डेवलपर . की ओर से टैब और सम्मिलित करें एक मॉड्यूल कोड विंडो में।
- फिर, प्रतिलिपि करें निम्नलिखित कोड और चिपकाएं इसे कोड विंडो में।
Sub AutoFilterOnSameColumnWithAND()
With ThisWorkbook.Worksheets("AND")
.Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With
End Sub
आपका कोड अब चलने के लिए तैयार है।
- उसके बाद, भागो मैक्रो जैसा कि हमने आपको उपरोक्त अनुभाग में दिखाया था। परिणाम नीचे दी गई छवि में दिखाया गया है।
कोड के सफल निष्पादन के बाद, कॉलम B 2 से 9 तक के मानों के साथ फ़िल्टर किया जाता है , जो दोनों शर्तों को पूरा करते हैं।
VBA कोड स्पष्टीकरण
With ThisWorkbook.Worksheets("AND")
.Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With
कोड का यह टुकड़ा,
- सबसे पहले कार्यपत्रक का नाम घोषित करता है जिसके साथ हम काम करेंगे ("AND ” हमारे डेटासेट के लिए शीट का नाम है)। आपको अपने डेटासेट के अनुसार शीट का नाम लिखना होगा।
- उसके बाद, कॉलम B फ़िल्टर करें सेल B4 . से प्रारंभ होता है संग्रहीत अनेक मानदंड . के अनुसार सेल E4 . में और E5 xlAnd . के साथ ऑपरेटर।
- फिर, छोड़ देता है कार्यपत्रक ।
और पढ़ें: [फिक्स]:श्रेणी श्रेणी की स्वत:फ़िल्टर विधि विफल (5 समाधान)
3. Excel में समान कॉलम पर OR ऑपरेटर के साथ ऑटोफ़िल्टर पर मैक्रो लागू करें
xlOR एक्सेल में ऑपरेटर दो मानदंडों के साथ काम करता है। xlAND के विपरीत , यह वे मान लौटाता है जो किसी भी मानदंड को पूरा करते हैं ।
अब, निम्नलिखित डेटासेट पर विचार करें। कॉलम बी रैंडम नंबर, . से मिलकर बनता है और हमने दो शर्तों को D4:E5 की श्रेणी में डाला . शर्तें हैं कॉलम B उन संख्याओं के साथ फ़िल्टर किया जाना है जो 12 से बड़ा या उसके बराबर . हैं (मान सेल E4 में संग्रहीत है ) या 7 से कम या उसके बराबर (मान सेल E5 में संग्रहीत है ) हम कॉलम B filter को फ़िल्टर करेंगे उन शर्तों के अनुसार या ऑपरेटर . के साथ एक्सेल में VBA ।
आइए देखें कि इसे कैसे करना है।
चरण:
- जैसा कि पहले दिखाया गया है, विजुअल बेसिक एडिटर खोलें डेवलपर . की ओर से टैब और सम्मिलित करें एक मॉड्यूल कोड विंडो में।
- फिर, प्रतिलिपि करें निम्नलिखित कोड और चिपकाएं इसे कोड विंडो में।
Sub AutoFilterOnSameColumnWithOR()
With ThisWorkbook.Worksheets("OR")
.Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With
End Sub
आपका कोड अब चलने के लिए तैयार है।
- बाद में, चलाएं मैक्रो और आउटपुट देखने के लिए निम्न छवि को देखें।
कोड के सफल निष्पादन के बाद, कॉलम B उन मानों के साथ फ़िल्टर किया जाता है जो 12 से अधिक या उसके बराबर या 7 से कम या उसके बराबर हैं ।
VBA कोड स्पष्टीकरण
With ThisWorkbook.Worksheets("OR")
.Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With
कोड का यह टुकड़ा,
- सबसे पहले कार्यपत्रक का नाम घोषित करता है जिसके साथ हम काम करेंगे ("या ” हमारे डेटासेट के लिए शीट का नाम है)। आपको अपने डेटासेट के अनुसार शीट का नाम लिखना होगा।
- उसके बाद, कॉलम B फ़िल्टर करें सेल B4 . से प्रारंभ होता है संग्रहीत अनेक मानदंड . के अनुसार सेल E4 . में और E5 xlOr . के साथ ऑपरेटर।
- फिर, छोड़ देता है कार्यपत्रक ।
और पढ़ें: एक्सेल वीबीए के साथ दृश्यमान पंक्तियों को ऑटोफ़िल्टर और कॉपी कैसे करें
4. एक ही फ़ील्ड पर एकाधिक टेक्स्ट मानों के आधार पर VBA को AutoFilter में एम्बेड करें
निम्नलिखित डेटासेट को देखें। कॉलम बी देश के नाम . से मिलकर बनता है . हम इस कॉलम को उस देश के आधार पर फ़िल्टर करेंगे जिसे हम मैक्रो में हार्डकोड करेंगे। हम कॉलम को स्वतः फ़िल्टर करेंगे दो देशों के नामों पर आधारित, ऑस्ट्रेलिया और इंग्लैंड ।
निष्पादित करने के चरण जो नीचे दिए गए हैं।
चरण:
- सबसे पहले, विजुअल बेसिक एडिटर खोलें डेवलपर . की ओर से टैब और सम्मिलित करें एक मॉड्यूल कोड विंडो में।
- फिर, प्रतिलिपि करें निम्नलिखित कोड और चिपकाएं इसे कोड विंडो में।
Sub AutoFilterOnSameColumnWithMultipleTexts()
Dim iArray As Variant
iArray = Array("Australia", "England")
Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0
End Sub
आपका कोड अब चलने के लिए तैयार है।
- अगला, चलाएं मैक्रो। अब, परिणाम देखने के लिए निम्न चित्र को देखें।
परिणामस्वरूप, स्तंभ B जो इतने सारे देशों से भरा हुआ था अब फ़िल्टर . है केवल दो देशों के नाम के साथ - ऑस्ट्रेलिया और इंग्लैंड - जो हमने कोड में दिया है।
VBA कोड स्पष्टीकरण
Dim iArray As Variant
चर . को परिभाषित करें सरणी . के लिए ।
iArray = Array("Australia", "England")
स्टोर पाठ्य मानदंड जिसके आधार पर फ़िल्टरिंग परिभाषित सरणी . में निष्पादित किया जाएगा ।
Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0
फ़िल्टर कॉलम बी सेल B4 . से प्रारंभ होता है एकाधिक टेक्स्ट मानदंड हार्डकोडेड . के अनुसार परिभाषित सरणी . में ।
और पढ़ें: एक्सेल में वीबीए के साथ मूल्यों को ऑटोफिल्टर कैसे करें जो एक निश्चित मूल्य के बराबर नहीं है
निष्कर्ष
निष्कर्ष निकालने के लिए, इस लेख ने आपको एक ही फ़ील्ड (स्तंभ) पर एकाधिक मानदंडों के साथ स्वत:फ़िल्टर करने के लिए के 4 तरीके दिखाए। एक्सेल में VBA मैक्रो . के साथ . मुझे उम्मीद है कि यह लेख आपके लिए बहुत फायदेमंद रहा होगा। विषय के संबंध में कोई भी प्रश्न पूछने के लिए स्वतंत्र महसूस करें।
संबंधित लेख
- VBA ऑटोफिल्टर:सबसे छोटे से सबसे बड़े तक छाँटें (3 तरीके)
- Excel VBA:मौजूद होने पर ऑटोफ़िल्टर निकालें (7 उदाहरण)