एक्सेल की ऑटोफिल्टर सुविधा कुछ शर्तों के आधार पर डेटा निकालने के लिए वास्तव में कुशल है। VBA लागू करना एक्सेल में किसी भी ऑपरेशन को चलाने का सबसे प्रभावी, त्वरित और सुरक्षित तरीका है। इस लेख में, हम आपको VBA मैक्रो के साथ एक्सेल में एक ही फ़ील्ड (कॉलम) पर बहु-मानदंड के साथ ऑटोफिल्टर करने के 4 तरीके दिखाएंगे।
वर्कबुक डाउनलोड करें
आप यहाँ से मुफ्त अभ्यास एक्सेल वर्कबुक डाउनलोड कर सकते हैं।
VBA के साथ एक ही फ़ील्ड (कॉलम) पर बहु-मानदंड के साथ ऑटोफिल्टर के 4 तरीके
इस खंड का पालन करके, आप सीखेंगे कि VBA के साथ एक्सेल में एक ही कॉलम पर बहु-मानदंड के साथ ऑटोफिल्टर कैसे करें: AND ऑपरेटर और OR ऑपरेटर के साथ एकाधिक टेक्स्ट और संख्यात्मक मान एक ही कॉलम पर 4 अलग-अलग मानदंडों में।
1. एक ही कॉलम पर बहु संख्यात्मक मानदंड के साथ ऑटोफिल्टर के लिए VBA एम्बेड करें
निम्न डेटासेट पर विचार करें। कॉलम B में कुछ यादृच्छिक संख्याएँ हैं, जबकि कॉलम D में केवल विषम संख्याएँ हैं। हम यहाँ जो करने जा रहे हैं, वह है कॉलम D में मानदंड के आधार पर कॉलम B को फ़िल्टर करना; अर्थात, यादृच्छिक संख्याएँ (कॉलम B) को विषम संख्याएँ के मानदंड के साथ शामिल और बीच की संख्याओं के साथ फ़िल्टर किया जाएगा जो कॉलम 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")
हमारे डेटासेट के लिए वर्कशीट नाम घोषित करें ("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)))
परिभाषित सरणी को कॉलम D में संग्रहीत मानदंड से भरें जो सेल D5 से शुरू होता है।
.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues End With
- कॉलम B फ़िल्टर सेल B4 से शुरू होता है, परिभाषित सरणी में संग्रहीत बहु मानदंड के अनुसार।
- उसके बाद, वर्कशीट छोड़ देता है।
और पढ़ें: एक्सेल VBA से जांचें कि ऑटोफिल्टर चालू है या नहीं (4 आसान तरीके)
2. एक्सेल में एक ही कॉलम पर AND ऑपरेटर के साथ ऑटोफिल्टर के लिए VBA लागू करें
एक्सेल में xlAND ऑपरेटर दो मानदंडों के साथ काम करता है। यह उन मानों को लौटाता है जो दोनों मानदंडों को पूरा करते हैं।
अब, निम्न डेटासेट पर विचार करें। कॉलम B में यादृच्छिक संख्याएँ, हैं, और हमने रेंज D4:E5 में दो शर्तें डाली हैं। शर्तें हैं: कॉलम B को उन संख्याओं के साथ फ़िल्टर किया जाना है जो 2 से अधिक या बराबर हैं (मान सेल E4 में संग्रहीत) और 9 से कम या बराबर (मान सेल E5 में संग्रहीत)। हम एक्सेल VBA में AND ऑपरेटर के साथ उन शर्तों के अनुसार कॉलम B को फ़िल्टर करेंगे।

इसे प्राप्त करने के चरण नीचे दिए गए हैं।
चरण:
- पहले की तरह ही, डेवलपर टैब से विजुअल बेसिक एडिटर खोलें और कोड विंडो में एक मॉड्यूल सम्मिलित करें।
- फिर, निम्न कोड कॉपी करें और कोड विंडो में पेस्ट करें।
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. एक्सेल में एक ही कॉलम पर OR ऑपरेटर के साथ ऑटोफिल्टर के लिए मैक्रो लागू करें
एक्सेल में xlOR ऑपरेटर दो मानदंडों के साथ काम करता है। xlAND के विपरीत, यह उन मानों को लौटाता है जो किसी भी मानदंड को पूरा करते हैं।
अब, निम्न डेटासेट पर विचार करें। कॉलम B में यादृच्छिक संख्याएँ, हैं, और हमने रेंज D4:E5 में दो शर्तें डाली हैं। शर्तें हैं: कॉलम B को उन संख्याओं के साथ फ़िल्टर किया जाना है जो 12 से अधिक या बराबर हैं (मान सेल E4 में संग्रहीत) या 7 से कम या बराबर (मान सेल E5 में संग्रहीत)। हम एक्सेल VBA में OR ऑपरेटर के साथ उन शर्तों के अनुसार कॉलम B को फ़िल्टर करेंगे।

आइए देखें कि ऐसा कैसे करें।
चरण:
- जैसा कि पहले दिखाया गया है, डेवलपर टैब से विजुअल बेसिक एडिटर खोलें और कोड विंडो में एक मॉड्यूल सम्मिलित करें।
- फिर, निम्न कोड कॉपी करें और कोड विंडो में पेस्ट करें।
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
कोड का यह टुकड़ा,
- पहले उस वर्कशीट नाम की घोषणा करता है जिसके साथ हम काम करेंगे ("OR" हमारे डेटासेट के लिए शीट नाम है)। आपको अपने डेटासेट के अनुसार शीट नाम लिखना होगा।
- उसके बाद, कॉलम B फ़िल्टर सेल B4 से शुरू होता है, सेल E4 और E5 में संग्रहीत बहु मानदंड के अनुसार xlOr ऑपरेटर के साथ।
- फिर, वर्कशीट छोड़ देता है।
और पढ़ें: एक्सेल VBA के साथ ऑटोफिल्टर और दृश्यमान पंक्तियाँ कॉपी करें
4. एक ही फ़ील्ड पर बहु टेक्स्ट मानों के आधार पर ऑटोफिल्टर के लिए VBA एम्बेड करें
निम्न डेटासेट देखें। कॉलम B में देश के नाम हैं। हम इस कॉलम को मैक्रो में हार्डकोड किए गए देश के आधार पर फ़िल्टर करेंगे। हम कॉलम को ऑटोफिल्टर करेंगे दो देश के नामों, ऑस्ट्रेलिया और इंग्लैंड के आधार पर।

इसे निष्पादित करने के चरण नीचे दिए गए हैं।
चरण:
- सबसे पहले, डेवलपर टैब से विजुअल बेसिक एडिटर खोलें और कोड विंडो में एक मॉड्यूल सम्मिलित करें।
- फिर, निम्न कोड कॉपी करें और कोड विंडो में पेस्ट करें।
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
कॉलम B फ़िल्टर सेल B4 से शुरू होता है, परिभाषित सरणी में हार्डकोड किए गए बहु टेक्स्ट मानदंड के अनुसार।
और पढ़ें: VBA के साथ एक्सेल में किसी निश्चित मान के बराबर नहीं ऑटोफिल्टर मान
निष्कर्ष
निष्कर्ष निकालने के लिए, इस लेख ने आपको VBA मैक्रो के साथ एक्सेल में एक ही फ़ील्ड (कॉलम) पर बहु-मानदंड के साथ ऑटोफिल्टर करने के 4 तरीके दिखाए। मुझे आशा है कि यह लेख आपके लिए बहुत फायदेमंद रहा होगा। विषय के संबंध में कोई भी प्रश्न पूछने के लिए स्वतंत्र महसूस करें।
संबंधित लेख
- VBA ऑटोफिल्टर: सबसे छोटे से सबसे बड़े क्रम में सॉर्ट करें (3 तरीके)
- एक्सेल VBA: ऑटोफिल्टर हटाएं यदि मौजूद है (7 उदाहरण)