NS वीबीए फ़िल्टर फ़ंक्शन आपको सरणियों को जल्दी से फ़िल्टर करने की अनुमति देता है। सरणियों को फ़िल्टर करते समय विचार करने के लिए कई सेटिंग्स हैं। हम नीचे उनकी चर्चा करेंगे।
फ़िल्टर - मैच
डिफ़ॉल्ट रूप से VBA फ़िल्टर फ़ंक्शन मैचों के लिए एक सरणी फ़िल्टर करेगा। नीचे दिए गए उदाहरण में हम "स्मिथ" के साथ मैचों के लिए सरणी को फ़िल्टर करेंगे।
1234567891011121314 | उप फ़िल्टर_मैच ()'सरणी परिभाषित करें'डिम strNames as वैरिएंटstrNames = Array ("स्टीव स्मिथ", "शैनन स्मिथ", "रयान जॉनसन")'फ़िल्टर ऐरे'डिम strSubNames as वैरिएंटstrSubNames = फ़िल्टर (strNames, "स्मिथ")'फ़िल्टर की गई सरणी की गणना करें'MsgBox "मिला" और UBound(strSubNames) - LBound(strSubNames) + 1 और "नाम।"अंत उप |
कुछ महत्वपूर्ण बिंदु:
- फ़िल्टर किए गए सरणी चर को सरणी आकार को परिभाषित करने से बचने के लिए डेटा प्रकार प्रकार के रूप में घोषित किया जाना चाहिए।
- डिफ़ॉल्ट रूप से, फ़िल्टर फ़ंक्शन केस संवेदनशील होता है। तो "स्मिथ" पर फ़िल्टर करने से "स्मिथ" की तुलना में एक अलग परिणाम मिलेगा। नीचे हम आपको दिखाएंगे कि इस सेटिंग को कैसे बदला जाए।
फ़िल्टर - केस असंवेदनशील
डिफ़ॉल्ट रूप से, VBA केस सेंसिटिव होता है। इसका मतलब है कि "स्मिथ" "स्मिथ" के बराबर नहीं है। यह फ़िल्टर फ़ंक्शन के साथ-साथ सभी (सबसे?) अन्य VBA फ़ंक्शंस या तुलनाओं के बारे में भी सच है।
व्यक्तिगत रूप से, मैं कभी नहीं चाहता कि वीबीए केस संवेदनशील हो, इसलिए मैं हमेशा अपने सभी कोड मॉड्यूल के शीर्ष पर विकल्प तुलना टेक्स्ट जोड़ता हूं। विकल्प टेक्स्ट की तुलना करें वीबीए को मामले को अनदेखा करने के लिए कहता है ताकि यह केस असंवेदनशील हो:
1 | विकल्प टेक्स्ट की तुलना करें |
अपने मॉड्यूल के शीर्ष पर विकल्प तुलना टेक्स्ट जोड़ने से फ़िल्टर फ़ंक्शन केस असंवेदनशील हो जाएगा। वैकल्पिक रूप से, आप फ़िल्टर फ़ंक्शन को vbTextCompare तर्क के साथ असंवेदनशील होने के लिए कह सकते हैं:
1 | strSubNames = फ़िल्टर (strNames, "स्मिथ", , vbTextCompare) |
पूरा उदाहरण:
1234567891011121314 | उप फ़िल्टर_मैचकेस ()'सरणी परिभाषित करें'डिम strNames as वैरिएंटstrNames = Array ("स्टीव स्मिथ", "शैनन स्मिथ", "रयान जॉनसन")'फ़िल्टर ऐरे'डिम strSubNames as वैरिएंटstrSubNames = फ़िल्टर (strNames, "स्मिथ", , vbTextCompare)'फ़िल्टर की गई सरणी की गणना करें'MsgBox "मिला" और UBound(strSubNames) - LBound(strSubNames) + 1 और "नाम।"अंत उप |
फ़िल्टर - मेल नहीं खाता
फ़िल्टर फ़ंक्शन का उपयोग सरणी आइटम की पहचान करने के लिए भी किया जा सकता है: नहीं शामिल तर्क को FALSE पर सेट करके दर्ज किए गए मानदंड से मिलान करें:
1 | strSubNames = फ़िल्टर (strNames, "स्मिथ", असत्य) |
पूर्ण उदाहरण:
1234567891011121314 | उप फ़िल्टर_नोमैच ()'सरणी परिभाषित करें'डिम strNames as वैरिएंटstrNames = Array ("स्टीव स्मिथ", "शैनन स्मिथ", "रयान जॉनसन")'फ़िल्टर ऐरे'डिम strSubNames as वैरिएंटstrSubNames = फ़िल्टर (strNames, "स्मिथ", असत्य)'फ़िल्टर की गई सरणी की गणना करें'MsgBox "मिला" और UBound(strSubNames) - LBound(strSubNames) + 1 और "नाम।"अंत उप |
फ़िल्टर फ़ंक्शन
VBA फ़िल्टर फ़ंक्शन एक आपूर्ति की गई स्ट्रिंग सरणी का एक ऐरे सबसेट देता है।
फ़िल्टर फ़ंक्शन सिंटैक्स है:
फ़िल्टर (सोर्सअरे, मैच, [शामिल करें], [तुलना करें])
फ़ंक्शन तर्क हैं:
- स्रोतअरे - फ़िल्टर करने के लिए मूल सरणी
- मिलान - खोजने के लिए स्ट्रिंग
- [शामिल] - ऐच्छिक TRUE (रिटर्न मैच), FALSE (मेल न खाने वाले एलिमेंट लौटाता है)
- [तुलना करना] - ऐच्छिक vbBinaryCompare - बाइनरी तुलना, vbTextCompare - पाठ तुलना, vbDatabaseCompare - डेटाबेस तुलना