खोज…


वाक्य - विन्यास

  1. समारोह फ़ंक्शन
    किसी फ़ंक्शन की मूल घोषणा। प्रत्येक फ़ंक्शन को एक नाम की आवश्यकता होती है, लेकिन इसके लिए कोई तर्क नहीं देना पड़ता है। इसमें 0 तर्क हो सकते हैं, या यह दिए गए तर्कों की संख्या ले सकता है। आप एक तर्क को वैकल्पिक भी घोषित कर सकते हैं (इसका मतलब यह है कि फ़ंक्शन को कॉल करते समय आप इसे आपूर्ति करते हैं तो कोई बात नहीं)। प्रत्येक तर्क के लिए चर प्रकार की आपूर्ति करना सबसे अच्छा अभ्यास है, और इसी तरह, जिस डेटा प्रकार के लिए फ़ंक्शन स्वयं लौटने वाला है उसे वापस करने के लिए।

  2. functionName =VariableOrValueBeingReturned
    यदि आप अन्य प्रोग्रामिंग भाषाओं से आ रहे हैं, तो आपको Return कीवर्ड का उपयोग किया जा सकता है। यह VBA में उपयोग नहीं किया जाता है - इसके बजाय, हम फ़ंक्शन नाम का उपयोग करते हैं। आप इसे एक चर की सामग्री या कुछ सीधे आपूर्ति किए गए मूल्य पर सेट कर सकते हैं। ध्यान दें कि यदि आपने फ़ंक्शन की वापसी के लिए एक डेटा प्रकार सेट किया है, तो इस समय आप जिस चर या डेटा की आपूर्ति कर रहे हैं, वह उस डेटा प्रकार का होना चाहिए।

  3. अंत समारोह
    अनिवार्य। Function कोडब्लॉक के अंत को दर्शाता है और इस प्रकार अंत में होना चाहिए। जब आप नया फ़ंक्शन बनाते हैं तो VBE आमतौर पर स्वचालित रूप से इसकी आपूर्ति करता है।

टिप्पणियों

एक उपयोगकर्ता परिभाषित फ़ंक्शन (उर्फ UDF) एक विशिष्ट कार्य को संदर्भित करता है जो उपयोगकर्ता द्वारा बनाया गया है। इसे एक वर्कशीट फ़ंक्शन (उदा: =SUM(...) ) के रूप में कहा जा सकता है या किसी उप-प्रक्रिया में किसी मान को चल रही प्रक्रिया में वापस करने के लिए उपयोग किया जाता है। यूडीएफ एक मान लौटाता है, आम तौर पर एक या अधिक मापदंडों के रूप में इसमें दी गई जानकारी से।

इसके द्वारा बनाया जा सकता है:

  1. VBA का उपयोग करना।
  2. एक्सेल सी एपीआई का उपयोग करना - एक्सएलएल बनाकर जो एक्सेल को संकलित कार्यों का निर्यात करता है।
  3. COM इंटरफ़ेस का उपयोग करना।

यूडीएफ - हैलो वर्ल्ड

  1. एक्सेल खोलें
  2. खोलें दृश्य मूल संपादक (देखें खुलने का दृश्य मूल संपादक )
  3. सम्मिलित करें -> मॉड्यूल पर क्लिक करके एक नया मॉड्यूल जोड़ें:

यहाँ छवि विवरण दर्ज करें

  1. नए मॉड्यूल में निम्न कोड को कॉपी और पेस्ट करें:
Public Function Hello() As String
'Note: the output of the function is simply the function's name
Hello = "Hello, World !"
End Function

प्राप्त करना :

यहाँ छवि विवरण दर्ज करें

  1. अपनी कार्यपुस्तिका पर वापस जाएं और "हेलो वर्ल्ड" देखने के लिए एक सेल में "= हैलो ()" टाइप करें।

यहाँ छवि विवरण दर्ज करें

दंड के बिना पूर्ण स्तंभ संदर्भों की अनुमति दें

कार्यपत्रक पर कुछ यूडीएफ को लागू करना आसान है यदि पूर्ण स्तंभ संदर्भों को मापदंडों के रूप में पारित किया जा सकता है। हालांकि, कोडिंग की स्पष्ट प्रकृति के कारण, इन सीमाओं को शामिल करने वाला कोई भी लूप सैकड़ों हजारों कोशिकाओं को संसाधित कर सकता है जो पूरी तरह से खाली हैं। यह आपके VBA प्रोजेक्ट (और कार्यपुस्तिका) को एक जमे हुए गंदगी को कम करता है जबकि अनावश्यक गैर-मूल्यों को संसाधित किया जाता है।

वर्कशीट की कोशिकाओं के माध्यम से लूपिंग किसी कार्य को पूरा करने की सबसे धीमी विधियों में से एक है, लेकिन कभी-कभी यह अपरिहार्य है। वास्तव में जो आवश्यक है, उसके लिए किए गए कार्य को काटने से पूर्ण समझ में आता है।

समाधान कार्यपत्रक के लिए पूर्ण स्तंभ या पूर्ण पंक्ति संदर्भों को अलग करना है। इंट्रैक्ट विधि के साथ संपत्ति का उपयोग करें । निम्न नमूना शिथिल एक वर्कशीट के देशी SUMIF फ़ंक्शन को दोहराने तो criteria_range भी के बाद से sum_range में प्रत्येक मान criteria_range में एक मूल्य के साथ किया जाना चाहिए sum_range सूट करने के लिए बदल दिया जाएगा होगा।

एक वर्कशीट पर इस्तेमाल किया गया UDF के लिए Application.Caller वह सेल है जिसमें वह रहता है। सेल की .Parent प्रॉपर्टी वर्कशीट है। इसका उपयोग .UsedRange को परिभाषित करने के लिए किया जाएगा।

एक मॉड्यूल कोड शीट में:

Option Explicit

Function udfMySumIf(rngA As Range, rngB As Range, _
                    Optional crit As Variant = "yes")
    Dim c As Long, ttl As Double
    
    With Application.Caller.Parent
        Set rngA = Intersect(rngA, .UsedRange)
        Set rngB = rngB.Resize(rngA.Rows.Count, rngA.Columns.Count)
    End With
    
    For c = 1 To rngA.Cells.Count
        If IsNumeric(rngA.Cells(c).Value2) Then
            If LCase(rngB(c).Value2) = LCase(crit) Then
                ttl = ttl + rngA.Cells(c).Value2
            End If
        End If
    Next c
    
    udfMySumIf = ttl

End Function

वाक्य - विन्यास:
=udfMySumIf(*sum_range*, *criteria_range*, [*criteria*])

udf_sumifs

हालांकि यह एक काफी सरल उदाहरण है, यह दो पूर्ण स्तंभ संदर्भों (प्रत्येक में 1,048,576 पंक्तियों) में गुजरने के लिए पर्याप्त रूप से प्रदर्शित करता है, लेकिन केवल 15 पंक्तियों के डेटा और मानदंडों को संसाधित करता है।


Microsoft ™ के सौजन्य से व्यक्तिगत तरीकों और संपत्तियों के आधिकारिक MSDN प्रलेखन को जोड़ा गया।

श्रेणी में अनन्य मानों की गणना करें

Function countUnique(r As range) As Long
    'Application.Volatile False ' optional
    Set r = Intersect(r, r.Worksheet.UsedRange) ' optional if you pass entire rows or columns to the function
    Dim c As New Collection, v
    On Error Resume Next   ' to ignore the Run-time error 457: "This key is already associated with an element of this collection".
    For Each v In r.Value  ' remove .Value for ranges with more than one Areas
        c.Add 0, v & ""
    Next
    c.Remove "" ' optional to exclude blank values from the count
    countUnique = c.Count
End Function

संग्रह



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow