Мне удалось создать макрос, который находит последнюю точку первой серии в диаграмме, добавляет и форматирует метку данных. Теперь я хотел бы заставить его подсчитывать серии, которые могут меняться по количеству, в диаграмме и проходить по каждой из них, делая то же, что он делал с серией 1.
Это ужасно не получается. Я закомментировал те части, которые я пробовал, но не получилось.
Я не уверен, как мне зациклить то, что я сделал.
Любая помощь будет принята с благодарностью.
Майкл.
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
Мой оригинальный макрос был написан с помощью Google/Форумов, а также методом проб и ошибок.
решение1
Нет необходимости в VBA (если вам не нравится VBA). Просто создайте вспомогательную серию, которая оценивает, есть ли другое значение (я использую формулу смещения). Если в вашей серии данных нет «следующего» значения, то верните текущее/последнее значение. В противном случае верните #N/A. Затем добавьте эту вспомогательную серию в свою диаграмму и назовите/отформатируйте по вкусу. Диаграмма игнорирует все N/A и отображает только конечную точку данных. Это также можно использовать для поиска других ключевых значений (например, первое, высокое, низкое и т. д.).
решение2
Просмотрите каждую серию в таблице -
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