如何用vba修改图表系列数据点的数据标签内容?

如下图所示:

图表的数据标签可以显示为系列名称、类别名称、值,还可以是单元格中的值。

如果只显示系列名称、类别名称、值,数据标签内容的先后顺序一定是系列名称+类别名称+值,这个先后顺序是无法通过操作改变的。

但是,在vba中我们可以通过设置DataLabel对象的Text属性把数据标签的内容修改为任意的内容,比如将上图中的数据标签的内容修改为类别名称+系列名称+值的先后顺序形式。

代码如下:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = Excel.ActiveSheet
    '内嵌在工作表的图表对象
    Dim oChartObject As ChartObject
    Set oChartObject = oWK.ChartObjects(1)
    '图表对象
    Dim oChart As Chart
    Set oChart = oChartObject.Chart
    '图表系列对象
    Dim oSeries As Series
    '图表坐标轴对象
    Dim oAxis As Axis
    '图表坐标轴集合对象
    Dim oAxes As Axes
    '图表数据点对象
    Dim oPoint As Point
    '图表数据点集合对象
    Dim oPoints As Points
    Dim oDataLabel As DataLabel
    With oChart
        '隐藏图表中的所有数据标签
        .ApplyDataLabels xlDataLabelsShowNone
        '第一个图表系列
        Set oSeries = .SeriesCollection(1)
        With oSeries
            '系列名称
            sName = .Name
            '分类名称
            arrx = .XValues
            '值
            arrY = .Values
            '显示整个系列的数据标签
            .HasDataLabels = True
            Set oPoints = .Points
            For i = 1 To oPoints.Count
                '构造数据标签的文本内容
                sText = arrx(i) & Chr(10) & sName & Chr(10) & arrY(i)
                Set oPoint = oPoints(i)
                With oPoint
                    '设置数据标签的文本内容
                    .DataLabel.Text = sText
                End With
            Next i
        End With
    End With
End Sub

运行代码后,图表中的数据标签内容变成了如下图所示:

 

总结:通过DataLabel对象的Text属性可以将图表系列的数据标签的内容修改为任意的形式和内容。

 

 

       

发表评论