यह ट्यूटोरियल समझाएगा कि VBA में उन्नत फ़िल्टर पद्धति का उपयोग कैसे करें
बड़ी मात्रा में डेटा के साथ काम करते समय एक्सेल में उन्नत फ़िल्टरिंग बहुत उपयोगी होती है जहाँ आप एक ही समय में कई प्रकार के फ़िल्टर लागू करना चाहते हैं। इसका उपयोग आपके डेटा से डुप्लिकेट को हटाने के लिए भी किया जा सकता है। VBA के भीतर से एक उन्नत फ़िल्टर बनाने का प्रयास करने से पहले आपको Excel में एक उन्नत फ़िल्टर बनाने से परिचित होना चाहिए।
निम्नलिखित कार्यपत्रक पर विचार करें।
आप एक नज़र में देख सकते हैं कि ऐसे डुप्लीकेट हैं जिन्हें आप हटाना चाहते हैं। खाते का प्रकार बचत, सावधि ऋण और चेक का मिश्रण है।
पहले आपको उन्नत फ़िल्टर के लिए एक मानदंड अनुभाग सेट करना होगा। आप इसे एक अलग शीट में कर सकते हैं।
संदर्भ में आसानी के लिए, मैंने अपनी डेटा शीट को 'डेटाबेस' और मेरी मानदंड शीट को 'मानदंड' नाम दिया है।
उन्नत फ़िल्टर सिंटैक्स
Expression.AdvancedFilter Action, CriteriaRange, CopyToRange, Unique
- NS अभिव्यक्ति रेंज ऑब्जेक्ट का प्रतिनिधित्व करता है - और एक रेंज के रूप में सेट किया जा सकता है (उदाहरण के लिए रेंज ("ए 1: ए 50") - या रेंज को एक चर को सौंपा जा सकता है और उस चर का उपयोग किया जा सकता है।
- NS कार्य तर्क की आवश्यकता है और या तो xlFilterInPlace या xlFilterCopy होगा
- NS मानदंड सीमा तर्क वह जगह है जहां से आप फ़िल्टर करने के लिए मानदंड प्राप्त कर रहे हैं (ऊपर हमारी मानदंड शीट)। यह वैकल्पिक है क्योंकि उदाहरण के लिए यदि आप अद्वितीय मानों के लिए फ़िल्टर कर रहे हैं तो आपको मानदंड की आवश्यकता नहीं होगी।
- NS कॉपी टू रेंज तर्क यह है कि आप अपने फ़िल्टर परिणाम कहाँ रखने जा रहे हैं - आप फ़िल्टर कर सकते हैं या आप अपने फ़िल्टर परिणाम को किसी वैकल्पिक स्थान पर कॉपी कर सकते हैं। यह भी एक वैकल्पिक तर्क है।
- NS अनोखा तर्क भी वैकल्पिक है - सत्य केवल अद्वितीय रिकॉर्ड पर फ़िल्टर करना है, झूठा मानदंडों को पूरा करने वाले सभी रिकॉर्ड पर फ़िल्टर करना है - यदि आप इसे छोड़ देते हैं, तो डिफ़ॉल्ट होगा झूठा.
डेटा को जगह में फ़िल्टर करना
मानदंड पत्रक में ऊपर दिखाए गए मानदंड का उपयोग करते हुए - हम सभी खातों को 'बचत' और 'वर्तमान' प्रकार के साथ खोजना चाहते हैं। हम जगह-जगह छान रहे हैं।
123456789 | उप CreateAdvancedFilter ()रेंज के रूप में मंद rngDatabaseसीमा के रूप में मंद rngमानदंड'डेटाबेस और मानदंड श्रेणियों को परिभाषित करें'सेट rngDatabase = शीट्स ("डेटाबेस")। रेंज ("A1: H50")सेट rngCriteria = शीट्स ("मानदंड")। रेंज ("A1: H3")'मानदंडों का उपयोग करके डेटाबेस को फ़िल्टर करें'rngDatabase.AdvancedFilter xlFilterInPlace, rngCriteriaअंत उप |
कोड उन पंक्तियों को छिपा देगा जो मानदंडों को पूरा नहीं करती हैं।
उपरोक्त VBA प्रक्रिया में, हमने CopyToRange या Unique तर्कों को शामिल नहीं किया।
डेटा रीसेट करना
दूसरा फ़िल्टर चलाने से पहले, हमें वर्तमान फ़िल्टर को साफ़ करना होगा। यह तभी काम करेगा जब आपने अपना डेटा जगह पर फ़िल्टर किया हो।
12345 | सब क्लियरफिल्टर ()त्रुटि पर फिर से शुरू करें अगला'सभी डेटा दिखाने के लिए फ़िल्टर रीसेट करें'ActiveSheet.ShowAllDataअंत उप |
अद्वितीय मान फ़िल्टर करना
नीचे दी गई प्रक्रिया में, मैंने अद्वितीय तर्क को शामिल किया है लेकिन CopyToRange तर्क को छोड़ दिया है। यदि आप इस तर्क को छोड़ देते हैं, तो आप दोनों में से एक तर्क के लिए प्लेसहोल्डर के रूप में अल्पविराम लगाना होगा
123456789 | उप UniqueValuesFilter1()रेंज के रूप में मंद rngDatabaseसीमा के रूप में मंद rngमानदंड'डेटाबेस और मानदंड श्रेणियों को परिभाषित करें'सेट rngDatabase = शीट्स ("डेटाबेस")। रेंज ("A1: H50")सेट rngCriteria = शीट्स ("मानदंड")। रेंज ("A1: H3")'मानदंडों का उपयोग करके डेटाबेस को फ़िल्टर करें'rngDatabase.AdvancedFilter xlFilterInPlace, rngCriteria, Trueअंत उप |
या जैसा कि नीचे दिखाया गया है, आपको नामित तर्कों का उपयोग करने की आवश्यकता है।
123456789 | उप UniqueValuesFilter2()रेंज के रूप में मंद rngDatabaseसीमा के रूप में मंद rngमानदंड'डेटाबेस और मानदंड श्रेणियों को परिभाषित करें'सेट rngDatabase = शीट्स ("डेटाबेस")। रेंज ("A1: H50")सेट rngCriteria = शीट्स ("मानदंड")। रेंज ("A1: H3")'मानदंडों का उपयोग करके डेटाबेस को फ़िल्टर करें'rngDatabase.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=rngCriteria, Unique:=Trueअंत उप |
ऊपर दिए गए दोनों कोड उदाहरण एक ही फ़िल्टर चलाएंगे, जैसा कि नीचे दिखाया गया है - केवल अद्वितीय मानों वाला डेटा।
CopyTo तर्क का उपयोग करना
123456789 | उप कॉपीटोफिल्टर ()रेंज के रूप में मंद rngDatabaseसीमा के रूप में मंद rngमानदंड'डेटाबेस और मानदंड श्रेणियों को परिभाषित करें'सेट rngDatabase = शीट्स ("डेटाबेस")। रेंज ("A1: H50")सेट rngCriteria = शीट्स ("मानदंड")। रेंज ("A1: H3")'फ़िल्टर किए गए डेटा को किसी वैकल्पिक स्थान पर कॉपी करें'rngDatabase.AdvancedFilter क्रिया:=xlFilterCopy, CriteriaRange:=rngCriteria, CopyToRange:=Range("N1:U1"), Unique:=Trueअंत उप |
ध्यान दें कि हम कोड की उन्नत फ़िल्टर लाइन में तर्कों के नाम छोड़ सकते थे, लेकिन नामित तर्कों का उपयोग करने से कोड को पढ़ना और समझना आसान हो जाता है।
नीचे दी गई यह रेखा ऊपर दिखाई गई प्रक्रिया में रेखा के समान है।
1 | rngDatabase.AdvancedFilter xlFilterCopy, rngCriteria, Range("N1:U1"), True |
एक बार कोड चलाने के बाद, मूल डेटा अभी भी प्रक्रिया में निर्दिष्ट गंतव्य स्थान में दिखाए गए फ़िल्टर किए गए डेटा के साथ दिखाया जाता है।
डेटा से डुप्लिकेट हटाना
हम मानदंड तर्क को छोड़कर, और डेटा को एक नए स्थान पर कॉपी करके डेटा से डुप्लिकेट निकाल सकते हैं।
1234567 | उप निकालें डुप्लीकेट ()रेंज के रूप में मंद rngDatabase'डेटाबेस को परिभाषित करें'सेट rngDatabase = शीट्स ("डेटाबेस")। रेंज ("A1: H50")'डेटाबेस को एक नई श्रेणी में फ़िल्टर करें जिसमें अद्वितीय सेट सही है'rngDatabase.AdvancedFilter क्रिया:=xlFilterCopy, CopyToRange:=Range("N1:U1"), Unique:=Trueअंत उप |