996 Aufrufe
in Tabellenkalkulation von ahorn38 Experte (3.3k Punkte)
Hallo,

ich versuche das erste mal ein Balkendiagramm auf einem Tabellenblatt einzufügen. Ich habe mir dafür eine "Vorlage" aus dem web als Grundlage genommen:

Sub SaeulendiagrammTest()

With ActiveSheet.Shapes.AddChart.Chart
ActiveSheet.ChartObjects(1).Top = Rows(Cells(Rows.Count, 1).End(xlUp).Row + 3).Top
ActiveSheet.ChartObjects(1).Left = Columns(2).Left

.ChartType = xlColumnClustered
.SetSourceData Source:=Range("D4:O4"), PlotBy:=xlColumns
With .SeriesCollection(1)
.XValues = Range("D4:O4")
.Values = Range(Cells(74, 4), Cells(74, 15))

End With
End With

End Sub

Im Range("D4:O4") stehen die Monatsbezeichungen, die Daten stehen in Zeile 74. Das Diagramm steht mit dem Code erst einmal...
Jetzt möchte ich in jedem Monat noch eine zweite Datenreihe aus Zeile 76 im gleichen Diagramm abbilden. Wie kann ich das erreichen. Bin für jeden Tipp dankbar, ggf, auch für einen komplett neuen Ansatz.
Danke und Gruß A.

5 Antworten

0 Punkte
von ahorn38 Experte (3.3k Punkte)
... es handelt sich natürlich um ein Säulendiagramm.
0 Punkte
von flupo Profi (17.9k Punkte)
Ich hab mal den Makrorekorder bemüht:
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).Values = "=Tabelle1!$D$76:$O$76"
ActiveChart.SeriesCollection(4).Name = "=""Neue Reihe"""

Ggf. muss der Name des Diagrammes noch angepasst werden.

Gruß Flupo
0 Punkte
von ahorn38 Experte (3.3k Punkte)
Danke Flupo,

das klappt zwar so, paßt aber leider nicht in meine Programmumgebung. Ich brauche in dem Code mehr Flexibilität bei der Zuordnung der Daten.
VG A.
0 Punkte
von m-o Profi (22.9k Punkte)
Hallo Andreas,

versuch es mal so:

Sub SaeulendiagrammTest()

With ActiveSheet.Shapes.AddChart.Chart
ActiveSheet.ChartObjects(1).Top = Rows(Cells(Rows.Count, 1).End(xlUp).Row + 3).Top
ActiveSheet.ChartObjects(1).Left = Columns(2).Left

.ChartType = xlColumnClustered
.SetSourceData Source:=Range("D4:O4"), PlotBy:=xlColumns
With .SeriesCollection(1)
.XValues = Range("D4:O4")
.Values = Range(Cells(74, 4), Cells(74, 15))
End With
'zweite Datenreihe hinzufügen
.SeriesCollection.Add Source:=Range(Cells(76, 4), Cells(76, 15))

End With

End Sub


Gruß

M.O.
0 Punkte
von flupo Profi (17.9k Punkte)
Wo ist das Problem? Die Parameter wie Zellbereich und Name der Reihe sind
einfache Strings, die sich ganz einfach durch Variablen ersetzen lassen. Und die
wiederum kannst du vor der Anwendung beliebig zusammenbauen. Bei Zahlen
muss man nur daran denken, sie vorher in Strings umzuwandeln.

Gruß Flupo

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...