2011-03-18 9 views
8

मेरे किसी एक कार्यक्रम में मुझे संख्याओं की संख्या पर औसत की गणना करने की आवश्यकता है। समस्या यह है कि कभी-कभी उत्तर एक विशाल दशमलव तक आता है और मुझे कोशिश करने की आवश्यकता होती है और उसे अधिकतम दो दशमलव स्थानों तक पहुंचने की आवश्यकता होती है।वीबीए गोल समारोह

मैंने Excel.WorksheetFunction.Round(...) नामक कुछ देखी है लेकिन जहां तक ​​मुझे पता है कि यह केवल एक विशिष्ट संख्या या एक विशिष्ट सेल के साथ काम करता है। मैं सोच रहा था कि अगर कोई जानता है कि इसे कैसे कार्यान्वित किया जाए ताकि यह कोशिकाओं की एक श्रृंखला में सभी दशमलवों को पार कर सके।

Excel.WorksheetFunction.Round(ActiveSheet.Range(g_first_Function_Col & "2:" & g_first_Function & g_totalRow).Select, 2) 

उपरोक्त कोड कोशिकाओं की एक श्रृंखला पर गोल समारोह का उपयोग करने का प्रयास करता है। G_first_Function_Col कुछ कॉलम है (जैसे कॉलम "एच") और g_totalRow आखिरी पंक्ति है जिसमें इसमें कोई मान है। जब मैं इस कोड को चलाने की कोशिश करता हूं तो यह मुझे "=" अपेक्षित बताता है। अनिवार्य रूप से मैं एक संपूर्ण कॉलम चुनने और इसे गोल करने की कोशिश कर रहा हूं।

धन्यवाद,

जेसी Smothermon

+0

दिलचस्प दृष्टिकोण (ऊपर स्यूडोकोड आप अपनी श्रेणी के सभी सेल के माध्यम से लूप के लिए एक बेहतर For..Next पाश की आवश्यकता होगी।), मैं पूछ सकता तुम क्यों प्रत्येक कोशिका दौर की जरूरत है? यह आपके प्रश्न से मुझे लगता है कि कुल मिलाकर और फिर गोल करने से काम करना होगा? –

+0

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

उत्तर

8

आप दो तरीकों से ऐसा कर सकते हैं कि कर रहे हैं।

अपने रेंज का चयन करें

और नंबर प्रारूप: अपनी श्रेणी के सभी सेल के माध्यम से

Range("myrange").Select 
Selection.NumberFormat = "0.00" 

-Loop और उनमें से प्रत्येक के लिए दौर समारोह लागू होते हैं। वीबीए में आप एक ही समय में एक पूर्ण श्रृंखला पर गोल समारोह का उपयोग करने में सक्षम नहीं होंगे।

For Each currentcell In myRange 
    currentcell.Value = Math.Round(currentcell.Value, 2) 
Next 

;

+0

आपको बहुत धन्यवाद, मैंने पहले सुझाव की कोशिश की और यह काम किया कि मैं कैसे चाहता था। मैं वास्तव में समय की कोशिश करने और बचाने के लिए एक बार में एक पूरी श्रृंखला करना चाहता था –