Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gestapeltes Diagramm mit Zellfarbe färbe

Gestapeltes Diagramm mit Zellfarbe färbe
26.11.2021 14:31:17
Linus
Hallo zusammen,
ich habe ein Problem, ein gestapeltes Säulendiagramm mit der Zellfarbe (bedingte Formatierung) einzufärben.
Es sollen insgesamt vier Säulendiragramme (bestendend aus den 4 vertikalen werten, aus den Spalten B :E) entstehen.
Anbei ein Bild:
Userbild
ich habe zwei Ansätze gefahren, jedoch färben sich die "Säulenblöcke" nicht wie gewünscht.

ActiveChart.ChartArea.Select
Application.ScreenUpdating = False
ActiveChart.ChartType = xlColumnStacked 'gestapeltes Säulendiagramm
ActiveChart.SetSourceData Source:=Range(Sheets("Analyse-Tool").Cells(9, 2), Sheets("Analyse-Tool").Cells(6, 2))
ActiveChart.PlotBy = xlRows
With ActiveChart
.HasTitle = True
.HasLegend = False
.HasDataTable = False
.AutoScaling = True
.ChartTitle.Text = "....."
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory).AxisTitle.Text = "...."
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue).AxisTitle.Text = "Status"
.Axes(xlValue, xlPrimary).MaximumScale = 25
.Axes(xlValue, xlPrimary).MinimumScale = 0
End With
'%%%%%%%%%%%%%%% Versuch 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'Loop through all charts in the active sheet
For Each oChart In ActiveSheet.ChartObjects
'Loop through all series in the target chart
For Each MySeries In oChart.Chart.SeriesCollection
'Get Source Data Range for the target series
FormulaSplit = Split(MySeries.Formula, ",")
'Capture the first cell in the source range then trap the color
'  Set SourceRange = Range(FormulaSplit(2)).Item(1)
Set SourceRange = Range("B6:B9").Item(1)
SourceRangeColor = SourceRange.Interior.Color
'Coloring for Excel 2007 and 2010
' MySeries.MarkerBackgroundColor = SourceRangeColor
' MySeries.MarkerForegroundColor = SourceRangeColor
MySeries.Format.Line.ForeColor.RGB = SourceRangeColor
MySeries.Format.Line.BackColor.RGB = SourceRangeColor
MySeries.Format.Fill.ForeColor.RGB = SourceRangeColor
Next MySeries
Next oChart
'%%%%%%%%%%%%%%% Versuch 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
With ActiveSheet.ChartObjects(1).Chart
Set Rng = ActiveSheet.Range("B6:B9")
j = 6
Set iColor = Range("B6:B9")
For i = 1 To 4
ActiveChart.SeriesCollection(i).Format.Fill.ForeColor.RGB = iColor(i).Interior.Color
ActiveChart.SeriesCollection(i).Format.Line.ForeColor.RGB = iColor(i).Interior.Color
ActiveChart.SeriesCollection(i).Format.Line.BackColor.RGB = iColor(i).Interior.Color
j = j + 1
Next i
End With
Beste Grüße und vielen Lieben Dank im Voraus
Lionel


		

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gestapeltes Diagramm mit Zellfarbe färbe
26.11.2021 14:52:31
Beverly
Hi Lionel,
wenn die Zellen mit bedingter Formatierung gefärbt sind kannst du nicht .Interior.Color - also Füllfarbe - der Quellzelle verwenden sondern musst die Erfüllung der Bedingung prüfen - dazu benutzt man .DisplayFormat.Interior.Color
PS: ich erhalte leider keine Mailbenachrichtigung mehr über eingegangene Antworten in den Threads - deshalb kann es etwas dauern, bis ich auf Beiträge antworte.

GrußformelBeverly's Excel - Inn
Anzeige
AW: Gestapeltes Diagramm mit Zellfarbe färbe
26.11.2021 16:02:40
ChrisL
Hi Linus
Bitte zukünftig keine Bilder, sondern eine Excel-Datei ins Forum stellen. Dann könnte man z.B. auch feststellen, wieso die Farbe in D6 deiner Datei nicht stimmt.
Der entscheidende Tipp kam bereits von Karin. Hier mal etwas umgesetzt:
https://www.herber.de/bbs/user/149422.xlsm

Sub tt()
Dim intZeile As Integer, intSpalte As Integer
Dim rngBereich As Range: Set rngBereich = Worksheets("Tabelle1").Range("B6:E9")
Application.ScreenUpdating = False
With rngBereich
For intZeile = .Row To .Row + .Rows.Count - 1
For intSpalte = .Column To .Column + .Columns.Count - 1
ActiveSheet.ChartObjects("Diagramm " & intSpalte - .Column + 1).Activate
ActiveChart.FullSeriesCollection(intZeile - .Row + 1).Format.Fill.ForeColor.RGB = _
Worksheets("Tabelle1").Cells(intZeile, intSpalte).DisplayFormat.Interior.Color
Next intSpalte
Next intZeile
End With
End Sub
cu
Chris
Anzeige
Datenpunktfarbe entspr. erfüllter Bedingung
26.11.2021 17:10:27
Beverly
Hi Chris,
man muss das Diagramm nicht aktivieren um die Datenpunktfarbe zu ändern. Und man kann durchaus die Datenreihenformel verwenden, um die Zellen zu extrahieren, deren erfüllte Bedingung verwendet werden soll - so wie es Lionel bereits versucht hatte. Sein Fehler war eben nur die Verwendung der falschen Eigenschaft.

Sub DiaFaerben()
Dim chrDia As ChartObject
Dim rngBereich As Range
Dim strZelle As String
Dim serReihe As Series
For Each chrDia In Worksheets("Tabelle2").ChartObjects
For Each serReihe In chrDia.Chart.SeriesCollection
strZelle = Split(serReihe.Formula, ",")(2)
serReihe.Interior.Color = Range(strZelle).DisplayFormat.Interior.Color
Next serReihe
Next chrDia
End Sub

GrußformelBeverly's Excel - Inn
PS: ich erhalte leider keine Mailbenachrichtigung mehr über eingegangene Antworten in den Threads - deshalb kann es etwas dauern, bis ich auf Beiträge antworte.
Anzeige
AW: Datenpunktfarbe entspr. erfüllter Bedingung
26.11.2021 17:14:56
ChrisL
Hi Beverly
Danke für das Beispiel. Sieht tatsächlich deutlich hübscher aus.
(musste am Freitagnachmittag etwas Zeit totschlagen und dabei blieb die Eleganz auf der Strecke ;)
Wünsche ein schönes Wochenende, cu
Chris
AW: Datenpunktfarbe entspr. erfüllter Bedingung
26.11.2021 20:22:56
Lionel
Hi ihr beiden,
vielen lieben Dank für die schnelle Unterstützung!
Manchmal liegt es eben an den kleinen unscheinbaren Dingen:)
Beste Grüße & ein schönes Wochenende
Lionel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige