Mir ist es gelungen, ein Makro zu erstellen, das den letzten Punkt der ersten Reihe in einem Diagramm findet und eine Datenbeschriftung hinzufügt und formatiert. Ich möchte es nun so einrichten, dass es die Reihen, deren Anzahl sich ändern kann, im Diagramm zählt und jede Reihe durchläuft und dabei das Gleiche tut wie bei Reihe 1.
Es schlägt kläglich fehl. Ich habe die Teile, die ich versucht habe, aber die fehlgeschlagen sind, auskommentiert.
Ich bin nicht sicher, wie ich das, was ich getan habe, in den Griff bekommen kann.
Jede Hilfe ist dankbar.
Michael.
Dim MyChart As Chart
Dim ChartPoints As Points
Dim ChartDataLables As DataLabel
'Dim NumberOfSeries As Series
Set MyChart = ActiveSheet.ChartObjects("Chart 1").Chart
'Set NumberOfSeries = MyChart.SeriesCollection.Count
Set ChartPoints = MyChart.SeriesCollection(1).Points
ChartPoints(ChartPoints.Count).ApplyDataLabels
Set ChartDataLables = ChartPoints(ChartPoints.Count).DataLabel
'For Each NumberOfSeries In MyChart
With MyChart
With ChartDataLables
.Position = xlLabelPositionRight
.HorizontalAlignment = xlCenter
.Font.Size = 8
.NumberFormat = "0.00"
.ShowSeriesName = True
.Font.Name = "Arial Narrow"
End With
End With
'Next NumberOfSeries
End Sub
Mein ursprüngliches Makro wurde mit Hilfe von Google/Foren und durch Ausprobieren geschrieben.
Antwort1
VBA ist nicht erforderlich (es sei denn, Sie mögen VBA). Erstellen Sie einfach eine Hilfsreihe, die auswertet, ob ein anderer Wert vorhanden ist (ich verwende eine Offset-Formel). Wenn Ihre Datenreihe keinen „nächsten“ Wert enthält, geben Sie den aktuellen/letzten Wert zurück. Andernfalls geben Sie ein #N/A zurück. Fügen Sie diese Hilfsreihe dann zu Ihrem Diagramm hinzu und beschriften/formatieren Sie es nach Belieben. Das Diagramm ignoriert alle N/A und stellt nur den letzten Datenpunkt dar. Dies kann auch verwendet werden, um andere Schlüsselwerte zu finden (z. B. erster, hoher, niedriger usw.).
Antwort2
Durchlaufen Sie jede Reihe im Diagramm -
Option Explicit
Public Sub LoopThroughSeries()
Dim myChart As ChartObject
Dim mySeries As Series
With myChart
For Each mySeries In myChart.Chart.SeriesCollection
'do stuff
Next
End With
End Sub