Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

PivotChart Datenbeschriftung an/aus

Betrifft: PivotChart Datenbeschriftung an/aus von: Chris
Geschrieben am: 17.10.2014 14:14:15

Hallo,
leider habe ich immer noch nicht mein Problem mit der Datenbeschriftung in den PivotCharts lösen können. Daher starte ich hier noch einen Versuch mit einer hoffentlich verständlicheren Problembeschreibung.

Ich habe mehrere Tabellenblätter mit einigen PivotCharts so wie auf dem Bild hier:


Für diese Charts werden immer die letzten 6 Monate aus den Referenzdaten benutzt.
Für die Datenbeschriftung (Prozentwerte über den Datenpunkten) sollen folgende Regeln gelten:

1) Wenn im AKTUELLEN Monat (im Bild der 1.10.) der Prozentwert von Datenreihe 2 (im Bild Avg Data_Quality_V) verfügbar ist, dann bitte die Datenbeschriftung dieser Zahlenreihe im Chart sichtbar machen und Datenreihe 1 unsichtbar. (genauso wie im Bild passiert)

2) Wenn im aktuellen Monat (1.10.) kein Prozentwert von Datenreihe 2 verfügbar ist (dieser Wert also 0,0% ist) sollen die Datenlabels aus Datenreihe 1 (im Bild Avg Data_Quality_C) sichtbar sein und die restlichen Werte aus Datenreihe 2 (Avg Data_Quality_V) unsichtbar.

Leider werden bei mir nur die Zahlen aus Datenreihe 2 sichtbar gemacht, auch wenn der Wert für den letzten Monat nicht verhanden ist, sprich 0 ist.

Ich hoffe ich konnte mein Problem diesmal besser darstellen und jemand kann mir weiter helfen!!
Gruß
Chris

Mit folgendem Code habe ich mich versucht:

For j = 1 To ActiveSheet.ChartObjects.Count
With ActiveSheet.ChartObjects(j)
'schaue nach dem letzten Datenpunkt im Diagramm der Datenreihe 2
                                
                                If vals(UBound(vals)) = "00.0%" And cht.ChartType =  _
xlLineMarkers And Then  'Wenn kein Wert in der Datenreihe 2 für den aktuellen Monat, mache  _
Datenreihe 1 sichbar und 2 unsichrbar
                                    Set s = cht.SeriesCollection(1)
                                    cb = 1 ' Variable um später spezielle Färbung vorzunehmen
                                    cht.SeriesCollection(2).HasDataLabels = False
                                    s.DataLabels.Font.Size = 13
                                    s.DataLabels.Font.Bold = msoCTrue
                                   Else
                                   cb = 0 
                                 End If
                                    
                                Set objChart(UBound(objChart)) = ActiveSheet.ChartObjects(j)
                                objChart(UBound(objChart)).Visible = False
                            End If
                        End With
                    Next