Excel-VBA: Datenpunkte einfärben

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!