उपयोगकर्ता परिभाषित कार्यों के साथ VBA सरणी में अद्वितीय मानों की गणना


0

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

मैं इस फ़ंक्शन को कॉल करने का प्रयास कर रहा हूं:

Function GetUniqueCount(aFirstArray As Variant)

Dim arr As New Collection, a
Dim i As Long

On Error Resume Next

For Each a In aFirstArray
    arr.Add a, Str(a)
Next

GetUniqueCount = arr.Count

End Function

इस तरह:

Function Stuff(parameters)

Dim myArray() as Variant

...do things to populate myArray, finally

Stuff = GetUniqueCount(myArray)

फ़ंक्शन GetUniqueCount एक समान प्रश्न पर यहां स्वीकृत उत्तर का बहुत हल्का संशोधित रूप है ।

जब मैं ऐसा करता हूं, तो स्टफ हमेशा समाप्त होता है 1 लौटता है तब भी जब यह स्पष्ट लगता है कि यह नहीं होना चाहिए। मैंने इस बिंदु तक सामग्री का परीक्षण किया और यह अपेक्षित तत्वों की संख्या का सही उत्पादन कर रहा है, मैं कुछ गलत कर रहा हूं जब मैं उन तत्वों की संख्या की गणना करता हूं जो अद्वितीय हैं। किसी भी मदद की सराहना की जाएगी, क्योंकि मुझे अभी भी वीबीए सरणियों की फांसी मिल रही है।

जवाबों:


1

मैंने यूडीएफ में कई छोटे बदलाव किए () .............. अंतर का अध्ययन करें:

Function GetUniqueCount(aFirstArray()) As Long
    Dim arr As Collection
    Set arr = New Collection

    On Error Resume Next
        For Each a In aFirstArray
            arr.Add a, CStr(a)
        Next
    On Error GoTo 0
    GetUniqueCount = arr.Count
End Function

Sub MAIN()
    Dim inpt()
    inpt = Array("alpha", "alpha", "beta", "beta", "gamma")
    MsgBox GetUniqueCount(inpt)
End Sub

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


धन्यवाद। मैंने अपने डिज़ाइन को थोड़ा सरल बनाया और यह भी शामिल किया कि आपने यहाँ क्या पेशकश की है, जिससे सही उत्तर मिल सके।
जो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.