【问题标题】:How to get the the source data of all the series of a chart in VBA?如何获取VBA中所有图表系列的源数据?
【发布时间】:2013-04-19 09:01:40
【问题描述】:
With ActiveWorkbook.Sheets(1)
INSPECT_CHARTS_NUMBER = .ChartObjects.Count
For c= 1 To .ChartObjects.Count
Set INSPECT_CHART = .ChartObjects(c).Duplicate

.ChartObjects(c).Chart.SetSourceData Source:=.Range("e4:h4")

Next lngC
End With

我执行上述操作是为了更改 VBA 中图表的源数据,这一行 .Chart.SetSourceData Source:=.Range("e4:h4") 确实可以完成工作,但如果该图表中有多个系列,这将不起作用。

如何获取所有系列的sourcedata,然后如何单独更改它们?

【问题讨论】:

    标签: excel vba charts


    【解决方案1】:

    这是一个例子

    假设活动图表的系列集合正在从A1:A5C1:C5 中选择值。所以下面的代码会将源代码更改为A8:A12C8:C12

    Dim sc As SeriesCollection
    Dim i as Long, j as Long
    
    j = 1
    
    For i = 1 To ActiveChart.SeriesCollection.Count
        ActiveChart.SeriesCollection(i).Values = "=Sheet1!R8C" & j & ":R12C" & j
        j = j + 2 '<~~ Adding 2 for Col C
    Next
    

    截图

    之前

    之后

    【讨论】:

    • 不错的@Sid。我在打电话;)
    【解决方案2】:

    使用.seriescollection

    Set ChartSeries = ChartObj.Chart.SeriesCollection.NewSeries
    
    With ChartSeries
        .Name = "Chart Series 1"
        .Values = Array(1, 2, 3, 4, 5)
        .XValues = Array("alpha", "beta", "gamma", "delta", "epsilon")
    End With
    

    更多关于这个link

    【讨论】:

    • + 1 :) I'm on my phone ;) – glh 2 mins ago 为您格式化帖子 :)
    【解决方案3】:

    您可以通过检索系列.Formula字符串来访问图表系列的数据源。

    之后,您可以更改公式(例如使用替换),然后重新应用该系列的公式。

    代码示例(为 Sid 提供的解决方案):

    Dim chart As ChartObject
    
    For Each chart In ActiveSheet.ChartObjects
    
        Dim ser As Series
    
        For Each ser In chart.Chart.SeriesCollection
            Dim oF As String
            Dim nF As String
            oF = ser.Formula
            nF = Replace(oF, "$1", "$8") ' Changing the row 1 to row 8
            nF = Replace(nF, "$5", "$12") ' Changing the row 5 to row 12
            ser.Formula = nF
        Next ser
    
    Next chart
    

    请务必使用 $ 符号,因为系列 .Formula 使用数字表示图表 Type 表示。该符号有助于省略替换公式中的图表类型。

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 2011-06-01
      相关资源
      最近更新 更多