खोज…


रेंज और एक निश्चित नाम के साथ एक चार्ट बनाना

चार्ट डेटा को परिभाषित करने वाली Series ऑब्जेक्ट के साथ सीधे काम करके चार्ट बनाया जा सकता है। ChartObject चार्ट के बिना Series आने के लिए, आप दिए गए Worksheet पर एक ChartObject बनाते हैं और फिर उससे Chart ऑब्जेक्ट प्राप्त करते हैं। Series वस्तु के साथ काम करने का उल्टा यह है कि आप Range ऑब्जेक्ट्स का संदर्भ XValues Values और XValues सेट कर सकते हैं। ये डेटा गुण Series को उन श्रेणियों के संदर्भ में ठीक से परिभाषित करेंगे। इस दृष्टिकोण के नकारात्मक पक्ष यह है कि Name सेट करते समय समान रूपांतरण को संभाला नहीं जाता है; यह एक निश्चित मूल्य है। यह मूल Range में अंतर्निहित डेटा के साथ समायोजित नहीं होगा। SERIES सूत्र की जाँच करना और यह स्पष्ट है कि नाम तय हो गया है। इसे सीधे SERIES सूत्र बनाकर संभाला जाना चाहिए।

चार्ट बनाने के लिए प्रयुक्त कोड

ध्यान दें कि इस कोड में Chart और Worksheet लिए अतिरिक्त चर घोषणाएं हैं। यदि उनका उपयोग नहीं किया जाता है तो इन्हें छोड़ा जा सकता है। यदि आप शैली या किसी अन्य चार्ट गुण को संशोधित कर रहे हैं तो वे उपयोगी हो सकते हैं।

Sub CreateChartWithRangesAndFixedName()

    Dim xData As Range
    Dim yData As Range
    Dim serName As Range
    
    'set the ranges to get the data and y value label
    Set xData = Range("B3:B12")
    Set yData = Range("C3:C12")
    Set serName = Range("C2")
    
    'get reference to ActiveSheet
    Dim sht As Worksheet
    Set sht = ActiveSheet
    
    'create a new ChartObject at position (48, 195) with width 400 and height 300
    Dim chtObj As ChartObject
    Set chtObj = sht.ChartObjects.Add(48, 195, 400, 300)
    
    'get reference to chart object
    Dim cht As Chart
    Set cht = chtObj.Chart
    
    'create the new series
    Dim ser As Series
    Set ser = cht.SeriesCollection.NewSeries
    
    ser.Values = yData
    ser.XValues = xData
    ser.Name = serName
    
    ser.ChartType = xlXYScatterLines

End Sub

मूल डेटा / पर्वतमाला और कोड रन के बाद Chart

ध्यान दें कि SERIES सूत्र एक भी शामिल है "B" श्रृंखला नाम के बजाय के लिए एक संदर्भ के लिए Range है कि यह बनाया।

डेटा और परिणाम चार्ट

एक खाली चार्ट बनाना

चार्टिंग कोड के विशाल बहुमत के लिए शुरुआती बिंदु एक खाली Chart बनाना है। ध्यान दें कि यह Chart डिफ़ॉल्ट चार्ट टेम्पलेट के अधीन है जो सक्रिय है और वास्तव में खाली नहीं हो सकता है (यदि टेम्पलेट को संशोधित किया गया है)।

ChartObject की कुंजी इसके स्थान का निर्धारण कर रही है। कॉल के लिए सिंटैक्स ChartObjects.Add(Left, Top, Width, Height) । एक बार जब ChartObject बनाया जाता है, तो आप वास्तव में चार्ट को संशोधित करने के लिए इसके Chart ऑब्जेक्ट का उपयोग कर सकते हैं। ChartObject शीट पर चार्ट को स्थिति के लिए Shape तरह अधिक व्यवहार करता है।

खाली चार्ट बनाने के लिए कोड

Sub CreateEmptyChart()
    
    'get reference to ActiveSheet
    Dim sht As Worksheet
    Set sht = ActiveSheet
    
    'create a new ChartObject at position (0, 0) with width 400 and height 300
    Dim chtObj As ChartObject
    Set chtObj = sht.ChartObjects.Add(0, 0, 400, 300)
    
    'get refernce to chart object
    Dim cht As Chart
    Set cht = chtObj.Chart
    
    'additional code to modify the empty chart
    '...

End Sub

परिणाम चार्ट

खाली चार्ट उदाहरण

श्रृंखला सूत्र को संशोधित करके एक चार्ट बनाएं

एक नए Chart और Series ऑब्जेक्ट (विशेष रूप से एक डायनामिक Series नाम के लिए) पर पूर्ण नियंत्रण के लिए, आपको सीधे SERIES सूत्र को संशोधित करना होगा। Range ऑब्जेक्ट्स सेट करने की प्रक्रिया सीधी है और मुख्य बाधा केवल SERIES सूत्र के लिए स्ट्रिंग बिल्डिंग है।

SERIES सूत्र निम्न सिंटैक्स लेता है:

=SERIES(Name,XValues,Values,Order)

इन सामग्रियों को संदर्भ या डेटा आइटम के लिए सरणी मान के रूप में आपूर्ति की जा सकती है। Order चार्ट के भीतर श्रृंखला की स्थिति का प्रतिनिधित्व करता है। ध्यान दें कि डेटा के संदर्भ तब तक काम नहीं करेंगे जब तक कि वे शीट नाम के साथ पूरी तरह से योग्य न हों। कार्य सूत्र के उदाहरण के लिए, किसी भी मौजूदा श्रृंखला पर क्लिक करें और सूत्र पट्टी की जाँच करें।

एक चार्ट बनाने और SERIES सूत्र का उपयोग करके डेटा सेट करने के लिए कोड

ध्यान दें कि SERIES सूत्र का उपयोग करने के लिए स्ट्रिंग बिल्डिंग .Address(,,,True) । यह सुनिश्चित करता है कि बाहरी रेंज संदर्भ का उपयोग किया जाता है ताकि शीट नाम के साथ पूरी तरह से योग्य पता शामिल हो। यदि शीट नाम को बाहर रखा गया है, तो आपको एक त्रुटि मिलेगी

Sub CreateChartUsingSeriesFormula()

    Dim xData As Range
    Dim yData As Range
    Dim serName As Range
    
    'set the ranges to get the data and y value label
    Set xData = Range("B3:B12")
    Set yData = Range("C3:C12")
    Set serName = Range("C2")
    
    'get reference to ActiveSheet
    Dim sht As Worksheet
    Set sht = ActiveSheet
    
    'create a new ChartObject at position (48, 195) with width 400 and height 300
    Dim chtObj As ChartObject
    Set chtObj = sht.ChartObjects.Add(48, 195, 400, 300)
    
    'get refernce to chart object
    Dim cht As Chart
    Set cht = chtObj.Chart
    
    'create the new series
    Dim ser As Series
    Set ser = cht.SeriesCollection.NewSeries
    
    'set the SERIES formula
    '=SERIES(name, xData, yData, plotOrder)
    
    Dim formulaValue As String
    formulaValue = "=SERIES(" & _
        serName.Address(, , , True) & "," & _
        xData.Address(, , , True) & "," & _
        yData.Address(, , , True) & ",1)"
    
    ser.Formula = formulaValue
    ser.ChartType = xlXYScatterLines

End Sub

मूल डेटा और परिणामस्वरूप चार्ट

ध्यान दें कि इस चार्ट के लिए, श्रृंखला नाम वांछित सेल में एक सीमा के साथ ठीक से सेट है। इसका मतलब है कि अपडेट Chart प्रचारित करेंगे।

डेटा और चार्ट SERIES सूत्र से

एक ग्रिड में चार्ट की व्यवस्था करना

एक्सेल में चार्ट के साथ एक सामान्य कोर एक शीट पर कई चार्ट के आकार और लेआउट को मानकीकृत कर रहा है। यदि मैन्युअल रूप से किया जाता है, तो आप सेल सीमाओं के लिए चार्ट को "स्टिक" में बदलने या स्थानांतरित करते हुए एएलटी को दबाए रख सकते हैं। यह एक युगल चार्ट के लिए काम करता है, लेकिन एक VBA दृष्टिकोण बहुत सरल है।

एक ग्रिड बनाने के लिए कोड

यह कोड दी गई (टॉप, लेफ्ट) स्थिति में शुरू होने वाले चार्टों का एक ग्रिड बनाएगा, जिसमें परिभाषित संख्या में कॉलम और एक परिभाषित कॉमन चार्ट साइज होगा। चार्ट को उस क्रम में रखा जाएगा जो वे बनाए गए थे और एक नई पंक्ति बनाने के लिए किनारे के चारों ओर लपेटते हैं।

Sub CreateGridOfCharts()

    Dim int_cols As Integer
    int_cols = 3
    
    Dim cht_width As Double
    cht_width = 250
        
    Dim cht_height As Double
    cht_height = 200
    
    Dim offset_vertical As Double
    offset_vertical = 195
    
    Dim offset_horz As Double
    offset_horz = 40

    Dim sht As Worksheet
    Set sht = ActiveSheet

    Dim count As Integer
    count = 0
    
    'iterate through ChartObjects on current sheet
    Dim cht_obj As ChartObject
    For Each cht_obj In sht.ChartObjects
        
        'use integer division and Mod to get position in grid
        cht_obj.Top = (count \ int_cols) * cht_height + offset_vertical
        cht_obj.Left = (count Mod int_cols) * cht_width + offset_horz
        cht_obj.Width = cht_width
        cht_obj.Height = cht_height

        count = count + 1

    Next cht_obj
End Sub

कई चार्ट के साथ परिणाम

ये चित्र चार्ट के मूल यादृच्छिक लेआउट और परिणामस्वरूप कोड को ऊपर कोड चलाने से दिखाते हैं।

इससे पहले

कई चार्ट की छवि से पहले

उपरांत

चार्ट का ग्रिड



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