Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

2007: Balkenfarbe abhängig vom wert einfärben

957 views
Skip to first unread message

thomas müller

unread,
Sep 19, 2008, 8:54:52 AM9/19/08
to
Hallo,

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

Claus Busch

unread,
Sep 19, 2008, 9:01:35 AM9/19/08
to
Hallo 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

Beverly

unread,
Sep 19, 2008, 9:28:00 AM9/19/08
to
Hi Thomas,

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/

thomas müller

unread,
Sep 20, 2008, 12:01:47 PM9/20/08
to
Hallo,

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:

thomas müller

unread,
Sep 20, 2008, 12:42:56 PM9/20/08
to
Hallo Beverly,

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:

Beverly

unread,
Sep 21, 2008, 3:20:00 AM9/21/08
to
Hi Thomas,

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)

thomas müller

unread,
Sep 21, 2008, 7:34:01 AM9/21/08
to
Hallo,

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:

0 new messages