格式化图表中每个系列的数据标签

时间:2015-01-06 20:40:22

标签: excel vba excel-vba charts

我试图找出一种有效的方法,无论是否是VBA,来格式化我所拥有的折线图上的数据标签。

图表应在每个系列的最右侧数据标签上显示系列名称,而其余数据标签为空白。

目前我只是在每个系列中添加数据标签,然后分别格式化每个单独的数据标签 - 但除了几个系列之外,当我有多个点的系列时,这很慢。

有什么建议吗?感谢

2 个答案:

答案 0 :(得分:0)

你可以循环遍历系列并在循环中放置

With currentSeries.points.first
    .label = "lable name"
    .font  = font(...)
    ...
End With

这样您只需在每个系列中指定一个点。

答案 1 :(得分:0)

您可以使用VBA或直接执行此操作。

VBA

假设sc是对SeriesCollection的引用,请使用

Dim isr As Integer, nsr As Integer
nsr = sc.Count
Dim sr As Series
Dim dp As Point
Dim dl As DataLabel
Dim fn As Font
For isr = 1 To nsr
    Set sr = sc(isr)
    Set dp = sr.Points(1)
    dp.HasDataLabel = True
    Set dl = dp.DataLabel
    dl.Text = "<your contents>"
    Set fn = dl.Characters.Font
    ' Format the data label
Next isr

您必须替换"<your contents>"请注意,您可以在此处设置对Excel范围的引用,而不是为数据标签设置固定值,这似乎是您的意图。

直接操作

比你正在做的事情容易得多。

要选择单个数据点,请单击目标系列,然后:1)再次单击目标数据点,或者2)按向右箭头,选择第一个数据点。

然后添加数据标签,右键单击数据点,然后添加数据标签

然后选择单个数据标签,单击数据标签一次(这将选择系列的所有数据标签,即使只有一个),然后:1)再次单击目标数据标签,或者2 )按右箭头,选择第一个数据标签。

然后编辑数据标签,转到公式栏并键入所需的内容。随意格式化。 请注意,您可以在此处设置对Excel范围的引用,而不是直接在数据标签中输入文字,这似乎是您的意图。