遍历图表并更改标签(类别名称)

时间:2018-11-09 02:30:21

标签: excel vba charts

我有一个数据集,该数据集从SharePoint导出到Excel,我们可以从中生成各种图表。

我需要简化“类别名称”,因为在某些情况下,它们太长了,会使图表看起来很糟糕。这些类别名称在我的办公室中以较短的首字母缩写而为人所熟知,因此可以将它们更改为这些首字母缩写。我大概有15个类别名称+替换首字母缩写词。

我想遍历工作簿中的所有图表,例如,执行以下操作:

  • “ AAAA,45%”,将其更改为“ AA,45%”
  • “ BBBB,22%”,将其更改为“ BB,22%”
  • “ CCCC,67%”,将其更改为“ CC,67%”

一些基本的Google fu产生了一个基本的循环(下面,但不起作用),但是我对图表和标签对象还不够熟悉,无法进行下一步并对类别标签进行编辑。显然,我只想更改类别,而不是更改计算值-上述示例中的百分比。有人可以协助吗?

With ActiveChart     
    For k = 1 To .SeriesCollection.Count         
        For j = 1 To .SeriesCollection(k).Points.Count             
            If .SeriesCollection(k).Points(j).DataLabel.Caption = "AAAA" Then 
                .SeriesCollection(k).Points(j).DataLabel.Caption = "AA"            
            End If 
        Next j     
    Next k 
End With

1 个答案:

答案 0 :(得分:1)

一个想法可能是Replace函数。

这可能会变得更强大,但应该让您入门:

Sub ShortenLabels()
    Dim k As Long, j As Long

    With ActiveChart
        For k = 1 To .SeriesCollection.Count
            For j = 1 To .SeriesCollection(k).Points.Count
                With .SeriesCollection(k).Points(j).DataLabel
                    .Caption = Replace(.Caption, "AAAA", "AA")
                    .Caption = Replace(.Caption, "BBBB", "BB")
                    .Caption = Replace(.Caption, "CCCC", "CC")
                End With
            Next j
        Next k
    End With
End Sub