यह ट्यूटोरियल आपको दिखाएगा कि VBA में एक्सेल COUNTIF और COUNTIFS फ़ंक्शन का उपयोग कैसे करें
VBA में COUNTIF या COUNTIFS फ़ंक्शंस के समकक्ष नहीं है जिसका आप उपयोग कर सकते हैं - एक उपयोगकर्ता को VBA में बिल्ट-इन एक्सेल फ़ंक्शंस का उपयोग करना होगा कार्यपत्रक समारोह वस्तु।
COUNTIF वर्कशीटफंक्शन
वर्कशीटफंक्शन ऑब्जेक्ट का उपयोग अधिकांश एक्सेल फ़ंक्शन को कॉल करने के लिए किया जा सकता है जो एक्सेल में इन्सर्ट फंक्शन डायलॉग बॉक्स में उपलब्ध हैं। COUNTIF फ़ंक्शन उनमें से एक है।
123 | उप टेस्टकाउंटिफ ()रेंज ("डी 10") = एप्लीकेशन। वर्कशीट फंक्शन। काउंटिफ (रेंज ("डी 2: डी 9"), "> 5")अंत उप |
उपरोक्त प्रक्रिया केवल रेंज (D2: D9) में कोशिकाओं की गणना करेगी यदि उनका मान 5 या अधिक है। ध्यान दें कि चूंकि आप चिह्न से अधिक का उपयोग कर रहे हैं, इसलिए 5 से अधिक मानदंड कोष्ठक के भीतर होना चाहिए।
एक चर के लिए एक COUNTIF परिणाम असाइन करना
आप अपने सूत्र के परिणाम को सीधे वापस और एक्सेल रेंज में लिखने के बजाय कोड में कहीं और उपयोग करना चाह सकते हैं। यदि ऐसा है, तो आप परिणाम को अपने कोड में बाद में उपयोग करने के लिए एक चर के लिए असाइन कर सकते हैं।
1234567 | उप असाइन करेंSumIfVariable ()डबल के रूप में मंद परिणाम'चर असाइन करें'परिणाम = एप्लिकेशन। वर्कशीटफंक्शन। काउंटइफ (रेंज ("डी 2: डी 9"), "> 5")'परिणाम दिखाएं'MsgBox "5 से अधिक मान वाले कक्षों की संख्या है" और परिणामअंत उप |
COUNTIFS का उपयोग करना
COUNTIFS फ़ंक्शन COUNTIF वर्कशीट फ़ंक्शन के समान है लेकिन यह आपको एक से अधिक मानदंडों की जांच करने में सक्षम बनाता है। नीचे दिए गए उदाहरण में, सूत्र D2 से D9 में कक्षों की संख्या की गणना करेगा जहां बिक्री मूल्य 6 से अधिक है और लागत मूल्य 5 से अधिक है।
123 | सब यूजिंग काउंटआईएफ ()रेंज ("डी 10") = वर्कशीटफंक्शन। काउंटआईएफ (रेंज ("सी 2: सी 9"), "> 6", रेंज ("ई 2: ई 9"), "> 5")अंत उप |
रेंज ऑब्जेक्ट के साथ COUNTIF का उपयोग करना
आप रेंज ऑब्जेक्ट के लिए कक्षों का एक समूह असाइन कर सकते हैं, और फिर उस रेंज ऑब्जेक्ट का उपयोग कर सकते हैं कार्यपत्रक समारोह वस्तु।
123456789 | उप टेस्टकाउंटआईएफरेंज ()रेंज के रूप में मंद rngCount'कोशिकाओं की श्रेणी निर्दिष्ट करें'सेट rngCount = रेंज ("D2: D9")'सूत्र में श्रेणी का प्रयोग करें'रेंज ("डी 10") = वर्कशीटफंक्शन। एसयूएमआईएफ (आरएनजीकाउंट, "> 5")'रेंज ऑब्जेक्ट्स जारी करें'सेट rngCount = कुछ नहींअंत उप |
एकाधिक रेंज ऑब्जेक्ट्स पर COUNTIFS का उपयोग करना
इसी तरह, आप कई रेंज ऑब्जेक्ट्स पर COUNTIFS का उपयोग कर सकते हैं।
123456789101112 | सब टेस्टकाउंट मल्टीपलरेंज ()मंद rngCriteria1 श्रेणी के रूप मेंमंद rngCriteria2 रेंज के रूप में'कोशिकाओं की श्रेणी निर्दिष्ट करें'सेट rngCriteria1= रेंज("D2:D9")सेट rngCriteria2 = रेंज("E2:E10")'सूत्र में श्रेणियों का प्रयोग करें'रेंज ("डी 10") = वर्कशीटफंक्शन। काउंटआईएफ (आरएनजीक्रिटेरिया 1, "> 6", आरएनजीक्रिटेरिया 2, "> 5")'रेंज ऑब्जेक्ट्स जारी करें'सेट rngCriteria1 = कुछ नहींसेट rngCriteria2 = कुछ नहींअंत उप |
काउंटिफ फॉर्मूला
जब आप का उपयोग करते हैं वर्कशीटफंक्शन.COUNTIF अपनी कार्यपत्रक में किसी श्रेणी में योग जोड़ने के लिए, एक स्थिर मान लौटाया जाता है, लचीला सूत्र नहीं। इसका मतलब यह है कि जब एक्सेल में आपके आंकड़े बदलते हैं, तो वह मान जो द्वारा वापस किया गया है कार्यपत्रक समारोह बदलेगा नहीं।
ऊपर के उदाहरण में, प्रक्रिया ने रेंज (D2:D9) में मानों वाले सेल की मात्रा की गणना की है, जहां बिक्री मूल्य 6 से अधिक है, और परिणाम D10 में रखा गया था। जैसा कि आप सूत्र पट्टी में देख सकते हैं, यह परिणाम एक आकृति है न कि कोई सूत्र।
यदि कोई मान रेंज (D2:D9) में बदलता है, तो D10 में परिणाम होगा नहीं परिवर्तन।
का उपयोग करने के बजाय वर्कशीट फंक्शन। SumIf, आप VBA का उपयोग सेल में SUMIF फ़ंक्शन को लागू करने के लिए कर सकते हैं सूत्र या फॉर्मूलाR1C1 तरीके।
सूत्र विधि
सूत्र विधि आपको विशेष रूप से कक्षों की श्रेणी को इंगित करने की अनुमति देती है जैसे: D2:D9 जैसा कि नीचे दिखाया गया है।
123 | उप टेस्टकाउंटिफ ()रेंज ("D10")।FormulaR1C1 = "= COUNTIF (D2: D9, ""> 5"")"अंत उप |
फॉर्मूलाR1C1 विधि
फॉर्मूलाआर१सी१ विधि इस मायने में अधिक लचीली है कि यह आपको कोशिकाओं की एक निश्चित श्रेणी तक सीमित नहीं रखती है। नीचे दिया गया उदाहरण हमें वही उत्तर देगा जो ऊपर दिया गया है।
123 | उप टेस्टकाउंटिफ ()रेंज ("डी 10")। फॉर्मूलाआर 1 सी 1 = "= काउंटिफ (आर [-8] सी: आर [-1] सी," "> 5" "")"अंत उप |
हालाँकि, सूत्र को और अधिक लचीला बनाने के लिए, हम इस तरह दिखने के लिए कोड में संशोधन कर सकते हैं:
123 | उप टेस्टकाउंटिफ ()ActiveCell.FormulaR1C1 = "=COUNTIF(R[-8]C:R[-1]C,"">5"")"अंत उप |
आप अपनी कार्यपत्रक में कहीं भी हों, तब सूत्र उन कक्षों की गणना करेगा जो इसके ठीक ऊपर के मानदंडों को पूरा करते हैं और उत्तर को आपके ActiveCell में रखेंगे। COUNTIF फ़ंक्शन के अंदर की रेंज को Row (R) और Column (C) सिंटैक्स का उपयोग करके संदर्भित किया जाना है।
ये दोनों विधियाँ आपको VBA के भीतर डायनेमिक एक्सेल फ़ार्मुलों का उपयोग करने में सक्षम बनाती हैं।
अब D10 में मान के बजाय एक फॉर्मूला होगा।
आपका लिंक टेक्स्ट