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