VBA के साथ आप एक कस्टम फ़ंक्शन बना सकते हैं (जिसे User Defined Function कहा जाता है) जिसका उपयोग सामान्य फ़ंक्शंस की तरह वर्कशीट में किया जा सकता है। यह तब उपयोगी होता है जब मौजूदा Excel फ़ंक्शन पर्याप्त नहीं होते हैं।
User Defined Function (UDF) एक उपयोगकर्ता-निर्मित फ़ंक्शन है जो मानक Excel कार्यक्षमता में मौजूद नहीं है।
इस उदाहरण में, हम एक कस्टम IF फ़ंक्शन बनाएंगे जिसका उपयोग अन्य Excel फ़ंक्शन के समान, वर्कशीट पर गणना में किया जा सकता है।
(बी2) का मान प्रदर्शित करने के लिए यदि सेल (सी2) का मान ("YES") है, तो हम सूत्र =IF(C2="YES",B2,0) में IF फ़ंक्शन का उपयोग कर सकते हैं:
इस मामले में हमारा लक्ष्य एक ऐसा फ़ंक्शन बनाना है जो यह कर सके =IF(C2 की पृष्ठभूमि हरे रंग की है,B2,0) और जिसे हम इस प्रकार लिखेंगे: =IF_GREEN(C2,B2):
आइए अपना स्वयं का यूडीएफ फ़ंक्शन बनाना शुरू करें:
Function IF_GREEN(paid As Range, amount)
End Function
तर्क:
इस मामले में, यदि चेक FALSe लौटाता है, तो मान हमेशा 0 होगा, इसलिए इसके लिए कोई तर्क निर्दिष्ट करने का कोई कारण नहीं है।
यह जांचने के लिए कि रंग सही है या नहीं, आप उस सेल का उपयोग कर सकते हैं जिसमें वह रंग है जिसकी आपको आवश्यकता है:
Function IF_GREEN(paid As Range, amount)
green_color = Sheets("Sheet1").Range("K1").Interior.color
End Function
लेकिन सेल पर निर्भर होने से बचने के लिए, हम बस वांछित रंग की संख्या का उपयोग करेंगे:
Function IF_GREEN(paid As Range, amount)
green_color = 5296274 'हरा
End Function
किसी सेल की पृष्ठभूमि रंग संख्या निर्धारित करने के लिए, सेल का चयन करें और इस मैक्रो को चलाएँ:
Sub test_color()
MsgBox ActiveCell.Interior.color
End Sub
अब, हमें बस IF का उपयोग करके सेल का रंग जांचना है:
Function IF_GREEN(paid As Range, amount)
Application.Volatile
green_color = 5296274 'हरा
If paid.Interior.color = green_color Then 'यदि सही
IF_GREEN = amount
Else 'यदि झूठ बोलता है
IF_GREEN = 0
End If
End Function
अब हमारा फ़ंक्शन उपयोग के लिए तैयार है।
हालाँकि, सेल भरण को बदलना वह घटना नहीं है जो पुनर्गणना को ट्रिगर करती है। एक्सेल को मानों की पुनर्गणना करने के लिए मजबूर करने के लिए, आप किसी भी खाली सेल का चयन कर सकते हैं और हटाएं पर क्लिक कर सकते हैं, या एक रीफ्रेश बटन ("Refresh") जोड़ सकते हैं जो आपके क्लिक करने पर सब कुछ रीफ्रेश कर देगा:
Sub refresh_macro()
Application.Calculate
End Sub
नीचे उसी फ़ंक्शन को लिखने का संक्षिप्त तरीका दिया गया है:
Function IF_GREEN(paid As Range, amount)
Application.Volatile
IF_GREEN = 0 'यदि झूठ बोलता है
If paid.Interior.color = 5296274 Then IF_GREEN = amount 'यदि सही
End Function
आप यहां क्लिक करके इस उदाहरण वाली tblExceltbl फ़ाइल डाउनलोड कर सकते हैं।