Hallo!
Ich brauch nochmal eure Hilfe.
Ich möchte die Datenpunkte einer Datenreihe unterschiedlich einfärben jeweils nach einem bestimmten Wert der in einer anderen Spalte steht. Insgesamt sind es vier Datenreihen in einem Diagramm.
Dies könnte ich natürlich ohne VBA realisieren, indem ich x-Datenreihen erzeuge und jede einer unterschiedlichen Farbe gebe, dies ist allerdings nicht die eleganteste Lösung und anhand meiner Datenmenge auch nicht wirklich so toll zu händeln.
Hab dann mal gegoogelt und bei einer Excelseite gesehen, dass das auch mit VBA geht. Ich hab aber leider keine Ahnung von VBA.
Das ganze funktioniert bei mir jetzt für die erste Datenreihe ohne Probleme, ich weiß allerdings nicht wie ich das Skript abändern muss, um auch die Datenreihe 2-4 einzufärben, bzw. wie spricht man die einzelnen Datenreihen in einem Diagram über vba an?
Hab mal ein Screenshot davon gemacht wie es momentan aussieht:
http://s5.directupload.net/images/071207/kic9ced4.jpg
Hiernoch der momentan verwendete Code:
Sub datenpunkte_faerben()
Dim chDiagramm As Chart
Dim inPunkt As Integer
Dim inFarbe1 As Integer
Set chDiagramm = ActiveSheet.ChartObjects(1).Chart
With chDiagramm
For inPunkt = 1 To .SeriesCollection(1).Points.Count
Select Case Cells(inPunkt + 1, 3)
Case 0
inFarbe1 = 4
Case 120
inFarbe1 = 36
Case 100
inFarbe1 = 6
Case 80
inFarbe1 = 45
Case 60
inFarbe1 = 3
End Select
.SeriesCollection(1).Points(inPunkt).MarkerBackgroundColorIndex = inFarbe1
.SeriesCollection(1).Points(inPunkt).MarkerForegroundColorIndex = inFarbe1
Next inPunkt
End With
End Sub
Wäre super wenn mir jemand helfen könnte!
Gruß Big_Player
Ich möchte die Datenpunkte einer Datenreihe unterschiedlich
einfärben jeweils nach einem bestimmten Wert der in einer
anderen Spalte steht. Insgesamt sind es vier Datenreihen in
einem Diagramm.
Das ganze funktioniert bei mir jetzt für die erste Datenreihe
ohne Probleme, ich weiß allerdings nicht wie ich das Skript
abändern muss, um auch die Datenreihe 2-4 einzufärben, bzw.
wie spricht man die einzelnen Datenreihen in einem Diagram
über vba an?
Hi Big,
wenn die 4 Reihen unterschiedliche Farbwerte bei gleichen Werten haben sollen könntest du eine Hilfstabelle in Blatt Tabelle3 einbauen mit den Farbwerten. Tabelle3!A-D sind die Farbwerte der 4 Reihen.
Tabelle:
F:\[buntepunkte.xls]!Tabelle3
│ A │ B │ C │ D │ E │
──┼────┼────┼────┼────┼──────┤
1 │ 36 │ 12 │ 4 │ 4 │ 120 │
2 │ 6 │ 45 │ 7 │ 6 │ 100 │
3 │ 45 │ 55 │ 34 │ 8 │ 80 │
4 │ 3 │ 23 │ 46 │ 10 │ 60 │
5 │ 4 │ 2 │ 12 │ 12 │ 0 │
6 │ 55 │ 55 │ 55 │ 55 │ else │
──┴────┴────┴────┴────┴──────┘
Tabellendarstellung erreicht mit dem Code in FAQ2363
Weiterhin wird vorausgesetzt, das die Werte für die 4 Reihen in den Spalten C-F deines Blattes mit dem Diagramm stehen.
Dann probiere mal den nachstehenden Code. „Is >=“ kannst du ersatzlos löschen wenn das nicht so gedacht ist.
Gruß
Reinhard
in ein Standardmodul, z.B. „Modul1“:
Option Explicit
'
Sub datenpunkte\_faerben()
Dim chDiagramm As Chart, inPunkt As Integer, inFarbe1 As Integer, inSC As Integer
Set chDiagramm = ActiveSheet.ChartObjects(1).Chart
With chDiagramm
For inSC = 1 To 4 ' die 4 Reihen
For inPunkt = 1 To .SeriesCollection(inSC).Points.Count
With Worksheets("Tabelle3")
Select Case Cells(inPunkt + 1, inSC + 2)
Case Is \>= 120
inFarbe1 = .Cells(1, inSC)
Case Is \>= 100
inFarbe1 = .Cells(2, inSC)
Case Is \>= 80
inFarbe1 = .Cells(3, inSC)
Case Is \>= 60
inFarbe1 = .Cells(4, inSC)
Case Is \>= 0
inFarbe1 = .Cells(5, inSC)
Case Else
inFarbe1 = .Cells(6, inSC)
End Select
End With
.SeriesCollection(inSC).Points(inPunkt).MarkerBackgroundColorIndex = inFarbe1
.SeriesCollection(inSC).Points(inPunkt).MarkerForegroundColorIndex = inFarbe1
Next inPunkt
Next inSC
End With
End Sub
Danke, das hat geholfen, nun funktioniert so wie ich mir das vorgestellt habe!