Диаграмма Excel — подсчет рядов и последующее добавление метки данных к последней точке

Диаграмма Excel — подсчет рядов и последующее добавление метки данных к последней точке

Мне удалось создать макрос, который находит последнюю точку первой серии в диаграмме, добавляет и форматирует метку данных. Теперь я хотел бы заставить его подсчитывать серии, которые могут меняться по количеству, в диаграмме и проходить по каждой из них, делая то же, что он делал с серией 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

Связанный контент