【问题标题】:Add data labels to the last point in a series in excel将数据标签添加到excel系列中的最后一个点
【发布时间】:2015-05-11 19:43:02
【问题描述】:

我在一个 Excel 工作表中有大约 50 个图表,我应该每个月更新这些图表。 我需要一个 VBA 代码,它将数据标签添加到数据系列的最后一点,以及工作表中的所有图表。 我的每个图表都有 3 个系列,但我需要将该月的数据(最新点)的标签添加到只有一个系列,即 YTD 数量。 我对编写 VBA 代码一无所知。我看过几个代码并尝试复制并进行小改动,但没有代码适合我的要求。我不想每个月手动进行 50 多次更改,所以任何可以解决我的问题的事情都会非常有帮助。非常感谢您的帮助!

【问题讨论】:

    标签: excel charts format vba


    【解决方案1】:

    这样的事情应该可以帮助您入门:

    Option Explicit
    
    Private Sub AddLabelsLastPoint()
    
        Dim ch As ChartObject
    
        'Loop through each chart object
        For Each ch In Worksheets("Sheet3").ChartObjects
    
            'Grab the final series of the chart
            With ch.Chart.SeriesCollection(3)
                'Apply data label to final point in series
                .Points(.Points.Count).ApplyDataLabels
            End With
    
        Next ch
    
    
    End Sub
    

    使用 ALT+F11 打开 VB 编辑器(或转到开发人员 --> 功能区上的 Visual Basic),然后右键单击“Microsoft Excel 对象” - -> 插入 --> 模块

    请务必将Worksheets("Sheet3") 更改为您使用的任何工作表。此外,此代码假定您的 YTD 金额始终是最后一个系列,因此每个图表的 SeriesCollection(3)。如果不是这样,我们将需要修改代码,但这至少是一个起点。

    既然你说你没有写 VBA 的知识,我会指出另外两件事(这与你的问题无关,但很高兴知道)。

    首先是Option Explicit 键盘。这会强制在使用变量之前声明变量。将其包含在您的 VBA 代码中是一种很好的做法。如果您不包含此内容,您可能会得到意想不到的结果(例如,如果您拼错了变量名)。

    其次是Private 关键字。这意味着只有当前模块中的代码才能访问子程序。

    【讨论】:

    • 谢谢乔希!我能够执行除此之外的代码,就像你提到的我想标记的系列是第二个而不是最后一个。所以,我在这里有点问题。我将 seriescollection 更改为 (2),但我认为这不会有任何区别。
    • .SeriesCollection(3) 更改为.SeriesCollection(2) 应该是每个图表的第二个系列。如果没有,我将需要考虑另一种方法来找到合适的系列。
    • 它没有,基本上我的系列是一个被覆盖的聚集列,这导致了我认为的问题。我将代码更改为我拥有的不同系列号,因此除了我想要的系列之外,所有其他系列都被标记。所以,我想我会在这一点上录制一个宏并每个月运行它。感谢您的帮助!
    猜你喜欢
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多