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/Forums 的帮助下通过反复试验编写的。

答案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

相关内容