VBA更改了堆积柱形图上的数据标签来自'值'到'系列名称'

时间:2016-03-07 07:40:06

标签: vba excel-vba excel-2016 excel

我想更改堆积柱形图上的数据标签“' value'到'系列名称'。

我要编辑的图表: enter image description here

我已经在互联网上搜索到了最好的东西,我认为可以做到的唯一方法就是使用VBA。我仍然是VBA菜鸟所以任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

进入Excel,我选择了我要编辑的图表,然后转到图表工具>选择所有标签。添加图表元素>数据标签>更多数据标签选项

enter image description here

接下来,我取消选中我在标签中不想要的任何选项,并根据"标签选项"检查我想要的选项。在我刚刚打开的对话框中。

enter image description here

这对我来说很好,但是如果它不适合您,或者您出于某些其他原因想要通过VBA编辑标签,则此脚本代码段会将给定图表的标签设置为系列名称:< / p>

Option Explicit

Sub Macro1()
  With ThisWorkbook.Worksheets("Grafar, utvikling").ChartObjects("Graf3").Chart.FullSeriesCollection(2)
    If Not .HasDataLabels Then
      .ApplyDataLabels
    End If
    If Not .DataLabels.ShowSeriesName Then
      .DataLabels.ShowSeriesName = True
    End If
  End With
End Sub

显然,您需要将工作表名称,图表名称等切换到图表中的任何内容 - 它不应该很难弄清楚,但如果您有任何问题,请随时评论问你是否有任何问题。

我使用宏录制器创建了宏,然后编辑结果,它通常可以为您尝试执行的任务提供一个良好的起点。根据我的经验,以这种方式找出Excel-VBA中的对象名称/结构比从头开始计算它更容易。

考虑到上面没有做你想做的事情,我怀疑你图表中的每一列都是一个系列。要快速显示图表中每个数据集的SeriesName,请尝试循环遍历图表中的所有系列:

Sub Macro1()
  Dim se As Series

  For Each se In ThisWorkbook.Worksheets("Grafar, utvikling").ChartObjects("Graf3").Chart.SeriesCollection
    If Not se.HasDataLabels Then
      se.ApplyDataLabels
    End If
    If Not se.DataLabels.ShowSeriesName Then
      se.DataLabels.ShowSeriesName = True
    End If
    If se.DataLabels.ShowValue Then
      se.DataLabels.ShowValue = False
    End If
  Next se

End Sub