wie kann ich unter 2007 bei einem Balkendiagramm mit Mittelwerten die
Balken abhängig vom Mittelwert einfärben.
z.B. Bis Wert 2,29 grün, 2,30 bis 3,49 gelb, 3,50 und größer rot
Danke
thomas
schau mal hier rein:
http://peltiertech.com/Excel/Charts/ConditionalChart1.html
Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate
Office 2003 SP2 / 2007 Ultimate
auf meiner HP, Seite "Diagramme" findest du dazu das Beispiel "Säulenfarbe
Werte-abhängig". Das Beispiel ist zwar für ein Säulendiagramm, lässt sich
aber genau so auch auf ein Balkendiagramm anwenden.
http://c.excelhost.de/c_beverly/getfile.php?id=47
Bis später,
Karin
http://beverly.excelhost.de/
danke erstmal Euch beiden.
Die Lösungen sind beide gut, allerdings muss ich das ganze an einen
Kunden rausgeben und es ist eine Art Master Datei, d.h. es werden damit
hunderte Berichte erstellt.
Gäbe es die Möglichkeit das ganze über ein Makro abzufangen, dass
automatisch die Werte überprüft und dann die Balken färbt?
Danke
thomas
Beverly schrieb:
habe mal mit einem Code den Du wohl vor ein paar Jahren mal geschrieben
hast folgendes ausprobiert:
Blatt "Daten": A5= 3; b5=4; c5= 9
Blatt "Diagramm" ein Blakendiagramm aus diesen 3 Werten.
Code habe ich in "Daten" platziert. Hier ist er:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strZelle As String
Dim pkPunkt As Point
Application.ScreenUpdating = False
strZelle = ActiveCell.Address
With Worksheets("Diagramm")
If Not Intersect(Target, Range("A5:C5")) Is Nothing Then
.ChartObjects(1).Activate
With ActiveChart.SeriesCollection(1)
.Points(1).Select
If Selection.DataLabel.Text < 4 Then
Selection.Interior.ColorIndex = 4
If Selection.DataLabel.Text >= 4 And
Selection.DataLabel.Text <= 7 Then Selection.Interior.ColorIndex = 6
If Selection.DataLabel.Text > 7 Then
Selection.Interior.ColorIndex = 3
End With
With ActiveChart.SeriesCollection(2)
.Points(1).Select
If Selection.DataLabel.Text < 4 Then
Selection.Interior.ColorIndex = 4
If Selection.DataLabel.Text >= 4 And
Selection.DataLabel.Text <= 7 Then Selection.Interior.ColorIndex = 6
If Selection.DataLabel.Text > 7 Then
Selection.Interior.ColorIndex = 3
End With
With ActiveChart.SeriesCollection(3)
.Points(1).Select
If Selection.DataLabel.Text < 4 Then
Selection.Interior.ColorIndex = 4
If Selection.DataLabel.Text >= 4 And
Selection.DataLabel.Text <= 7 Then Selection.Interior.ColorIndex = 6
If Selection.DataLabel.Text > 7 Then
Selection.Interior.ColorIndex = 3
End With
End If
End With
ActiveWindow.Visible = False
Windows("Mappe1.xlsm").Activate
Worksheets("Daten").Activate
Range(strZelle).Select
Application.ScreenUpdating = True
End Sub
Allerdings bekomme ich immer bei "With ActiveChart.SeriesCollection(2)"
einen Fehler und die BAlken 2 und 3 färben sich nicht. Woran könnten das
den liegen?
Danke
thomas
Beverly schrieb:
ja, der Code ist schon etwas älter. ;-)
Versuche es mal mit diesem hier:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chDiagramm As Chart
Application.ScreenUpdating = False
If Not Intersect(Target, Range("A5:C5")) Is Nothing Then
Set chDiagramm = Worksheets("Diagramm").ChartObjects(1).Chart
With chDiagramm.SeriesCollection(Target.Column).Points(1)
If Cells(5, Target.Column) < 4 Then .Interior.ColorIndex = 4
If Cells(5, Target.Column) >= 4 And Cells(5, Target.Column) <= 7
Then .Interior.ColorIndex = 6
If Cells(5, Target.Column) > 7 Then .Interior.ColorIndex = 3
End With
End If
Application.ScreenUpdating = True
Set chDiagramm = Nothing
End Sub
Du musst aber beachten, dass erst einmal in alle 3 Zellen ein Wert
eignetragen werden muss (oder die Zellen editiert werden müssen), ehe alle 3
Balken die richtige Ausgangsfarbe haben, da jeweils nur der Datenpunkt
gefärbt wird, in dessen Bezugszelle eine Werteänderung stattfindet.
Da ich leider dein Diagramm nicht kenne, weiß ich nicht ob es 3 Datenreihen
mit jeweils 1 Punkt sind (dafür gilt der Code) oder nur 1 Datenreihe mit 3
Punkten ist (das könnte die Erklärung für die Fehlermeldung sein). Wenn es
nur 1 Datenreihe ist, müsstest du die 6. Zeile ändern in:
With chDiagramm.SeriesCollection(1).Points(Target.Column)
vielen Dank klappt super. Ob ich es nun mit einer oder mehreren
Datenreihen mache, weiß ich noch nicht, ich bin noch dabei mir eine
geeignete Auswertungssystematik zu erstellen.
In diesem Bericht wird es viele deratige Diagramme geben. Kann ich dann
für jedes Diagramm den Code duplizieren und anpassen (Schleifen etc muss
ich mir erst noch beibringen:) und das ChartObjects hochzählen?
Es kann allerdings auch vorkommen, dass eine der Zellen = ist bzw nichts
drin steht oder dass sich Werte nicht geändert haben. Die Werte in den
Zellen kommen nämlich je nach Filterung zustande... Gibts da ein Problem?
Danke
thomas
Beverly schrieb: