Suche…


Erstellen eines Diagramms mit Bereichen und einem festen Namen

Diagramme können erstellt werden, indem direkt mit dem Series Objekt gearbeitet wird, das die Diagrammdaten definiert. Um ohne ein vorhandenes Diagramm zur Series zu gelangen, erstellen Sie ein ChartObject in einem bestimmten Worksheet und ChartObject dann das Chart Objekt ab. Die Arbeit mit dem Series Objekt hat den XValues dass Sie die Values und XValues Values XValues indem Sie auf Range Objekte verweisen. Diese Dateneigenschaften definieren die Series ordnungsgemäß mit Verweisen auf diese Bereiche. Der Nachteil dieses Ansatzes ist, dass beim Festlegen des Name nicht dieselbe Konvertierung ausgeführt wird. es ist ein fester Wert. Es wird nicht mit den zugrunde liegenden Daten im ursprünglichen Bereich Range . Wenn Sie die SERIES Formel SERIES , ist es offensichtlich, dass der Name festgelegt ist. Dies muss durch direktes Erstellen der SERIES Formel erfolgen.

Code zum Erstellen eines Diagramms

Beachten Sie, dass dieser Code zusätzliche Variablendeklarationen für das Chart und das Worksheet . Diese können weggelassen werden, wenn sie nicht verwendet werden. Sie können jedoch nützlich sein, wenn Sie den Stil oder andere Diagrammeigenschaften ändern.

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

Ursprüngliche Daten / Bereiche und resultierendes Chart nach Code-Ausführung

Beachten Sie, dass die SERIES Formel anstelle des Verweises auf den Range , in dem sie erstellt wurde, ein "B" für den SERIES enthält.

Daten und Ergebnisdiagramm

Erstellen eines leeren Diagramms

Der Ausgangspunkt für die überwiegende Mehrheit des Diagrammcodes ist das Erstellen eines leeren Chart . Beachten Sie, dass dieses Chart der aktiven Standardvorlagenvorlage unterliegt und möglicherweise nicht leer ist (wenn die Vorlage geändert wurde).

Der Schlüssel für das ChartObject ist das Bestimmen seines Standorts. Die Syntax für den Aufruf lautet ChartObjects.Add(Left, Top, Width, Height) . Nachdem das ChartObject erstellt wurde, können Sie das Chart Objekt verwenden, um das Diagramm tatsächlich zu ändern. Das ChartObject verhält sich eher wie eine Shape um das Diagramm auf dem ChartObject zu positionieren.

Code zum Erstellen eines leeren Diagramms

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

Ergebnisdiagramm

leeres Diagrammbeispiel

Erstellen Sie ein Diagramm, indem Sie die SERIES-Formel ändern

Für die vollständige Kontrolle über ein neues Chart und Series - Objekt (vor allem für einen dynamischen Series müssen Sie die zu modifizierenden greifen SERIES Formel direkt. Der Vorgang zum Einrichten der Range Objekte ist unkompliziert und die Haupthürde besteht einfach aus der Zeichenfolge für die SERIES Formel.

Die SERIES Formel verwendet die folgende Syntax:

=SERIES(Name,XValues,Values,Order)

Diese Inhalte können als Referenzen oder als Array-Werte für die Datenelemente bereitgestellt werden. Order für die Reihenposition innerhalb des Diagramms. Beachten Sie, dass die Verweise auf die Daten nur funktionieren, wenn sie mit dem Blattnamen vollständig qualifiziert sind. Klicken Sie für ein Beispiel einer Arbeitsformel auf eine vorhandene Serie, und überprüfen Sie die Formelleiste.

Code zum Erstellen eines Diagramms und Einrichten von Daten mithilfe der SERIES Formel

Beachten Sie, dass beim Erstellen der Zeichenfolge zur Erstellung der SERIES Formel .Address(,,,True) . Dadurch wird sichergestellt, dass die externe Bereichsreferenz verwendet wird, sodass eine vollständig qualifizierte Adresse mit dem Blattnamen angegeben wird. Sie erhalten eine Fehlermeldung, wenn der Blattname ausgeschlossen ist .

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

Originaldaten und Ergebnisdiagramm

Beachten Sie, dass für dieses Diagramm der Serienname richtig mit einem Bereich zur gewünschten Zelle festgelegt ist. Dies bedeutet, dass Aktualisierungen auf das Chart .

Daten und Diagramm aus der SERIES-Formel

Charts in einem Raster anordnen

Eine übliche Aufgabe bei Diagrammen in Excel ist die Standardisierung der Größe und des Layouts mehrerer Diagramme auf einem einzelnen Blatt. Wenn Sie dies manuell tun, können Sie die ALT- Taste gedrückt halten, während Sie die Größe des Diagramms ändern oder verschieben, um an den Zellgrenzen zu bleiben. Dies funktioniert für ein paar Diagramme, aber ein VBA-Ansatz ist viel einfacher.

Code zum Erstellen eines Gitters

Mit diesem Code wird ein Diagrammraster erstellt, das an einer bestimmten Position (oben, links) mit einer definierten Anzahl von Spalten und einer definierten allgemeinen Diagrammgröße beginnt. Die Diagramme werden in der Reihenfolge platziert, in der sie erstellt wurden, und werden um den Rand herumgelegt, um eine neue Zeile zu bilden.

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

Ergebnis mit mehreren Diagrammen

Diese Bilder zeigen das ursprüngliche zufällige Layout der Diagramme und das resultierende Raster, wenn der obige Code ausgeführt wird.

Vor

vor Bild mehrerer Diagramme

Nach dem

Raster von Diagrammen



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow