Clever-Excel-Forum

Normale Version: Kursdiagramm - Candlestickformation
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich habe ein Liniendiagramm (Chart) erstellt das mit den Inputdaten  a. Datum und b. Close eines Aktienkurses erstellt wird.  Die Daten werden direkt von einem Array in das Diagramm gelesen. Nun möchte ich das Diagramm so umändern dass ich eine sogenannte Candlestick-Darstellung erhalte. Die Daten hierfür liegen alle in Arrays: a. Datum, b. Open, c. High, d, Low und e. close.

Ich bringe das irgendwie einfach nicht hin. Die jetzige Liniendarstellung sieht wie folgt aus und funktioniert auch. Wie kann ich die Candlestickformation direkt von den Arrays in das Diagramm bringen. 

Vielen Dank im Voraus

  'funktionstüchtiges Liniendiagramm
  Dim XDatum() as string 'beinhaltet das datum
  Dim YClose() as single    'beinhaltet die Schlußkurse
  Dim YOpen() as single    'beinhaltet die Eröffnungskurse
  Dim YHigh() as single     'beinhaltet die Höchstkurse
   Dim YLow() as single     'beinhaltet die Tiefstkurse

  Dim chDiagramm As Excel.ChartObject
  For Each chDiagramm In ActiveSheet.ChartObjects
    chDiagramm.Delete
  Next
    
  'Neu erstellen
  Set chDiagramm = ActiveSheet.ChartObjects.Add(500, 10, 1000, 1000)
  chDiagramm.Chart.ChartType = xlLine

  'Datum
  With chDiagramm.Chart.SeriesCollection.NewSeries
      .XValues = XDatum
      .Name = "Datum"
  End With
    
  'Close
  With chDiagramm.Chart.SeriesCollection.NewSeries
      .Values = YClose
      .Name = "Close"
  End With
Hallöchen,

im Prinzip geht das so (getestet in 2016). Du erzeugst erst eine "leere Diagrammhülle" und fügst der dann die Datenreihen und deren Daten hinzu. Die Datenreihen müssen dabei gleich groß sein.
Nach den Datenreihen kannst Du noch die Achsbeschriftung hinzufügen und erst zum Schluß legst Du den Diagrammtyp fest.
FullSeriesCollection gibt es eventuell nicht unter allen Excelversionen, eventuell reicht da auch SeriesCollection.

Code:
Sub Create_CandleStickChart()
'CandleStickChart
'Variablendeklaration
Dim objCSChart As ChartObject
'nur zum Test - Array's
Dim arr1, arr2, arr3, arr4, arr5
'Neues Diagramm ab Zelle A1 erzeugen
Set objCSChart = ActiveSheet.ChartObjects.Add(Left:=Range("a1").Left, Width:=400, Top:=Range("a1").Top, Height:=200)
'Mit dem neuen Diagramm
With objCSChart.Chart
 'neue Datenreihe hinzufuegen
 .SeriesCollection.NewSeries
   'Daten aus Array 1 einfuegen
   arr1 = Range("B2:B21").Value 'nur zum Test, Daten aus Zellbereich in Array holen
   .FullSeriesCollection(1).Values = arr1
 'neue Datenreihe hinzufuegen
 .SeriesCollection.NewSeries
   'Daten aus Array 2 einfuegen
   arr3 = Range("C2:C21").Value 'nur zum Test, Daten aus Zellbereich in Array holen
   .FullSeriesCollection(2).Values = arr2
 'neue Datenreihe hinzufuegen
 .SeriesCollection.NewSeries
   'Daten aus Array 3 einfuegen
   arr3 = Range("D2:D21").Value 'nur zum Test, Daten aus Zellbereich in Array holen
   .FullSeriesCollection(3).Values = arr3
 'neue Datenreihe hinzufuegen
 .SeriesCollection.NewSeries
   'Daten aus Array 4 einfuegen
   arr4 = Range("E2:E21").Value 'nur zum Test, Daten aus Zellbereich in Array holen
   .FullSeriesCollection(4).Values = arr4
 'Beschriftung X-Achse hinzufuegen
   arr5 = Range("A2:A21").Value 'nur zum Test, Daten aus Zellbereich in Array holen
   .FullSeriesCollection(4).XValues = arr5
 'Diagrammtyp festlegen
   .ChartType = xlStockOHLC
'Ende Mit dem neuen Diagramm
End With
End Sub
Hallo Schauan,

vielen Dank für die Hilfe! Ich probier es gleich aus.