通过修改 SERIES 公式创建图表

要完全控制新的 ChartSeries 对象(尤其是动态 Series 名称),你必须直接修改 SERIES 公式。设置 Range 对象的过程很简单,主要障碍就是 SERIES 公式的字符串构建。

SERIES 公式采用以下语法:

=SERIES(Name,XValues,Values,Order)

这些内容可以作为参考提供,也可以作为数据项的数组值提供。Order 代表图表中的系列位置。请注意,除非使用工作表名称完全限定数据,否则对数据的引用将不起作用。有关工作公式的示例,请单击任何现有系列并检查公式栏。

使用 SERIES 公式创建图表和设置数据的代码

请注意,用于创建 SERIES 公式的字符串构建使用 .Address(,,,True)。这可确保使用外部 Range 引用,以便包含具有工作表名称的完全限定地址。如果排除工作表名称,将收到错误

Sub CreateChartUsingSeriesFormula()

    Dim xData As Range
    Dim yData As Range
    Dim serName As Range
    
    'set the ranges to get the data and y value label
    Set xData = Range("B3:B12")
    Set yData = Range("C3:C12")
    Set serName = Range("C2")
    
    'get reference to ActiveSheet
    Dim sht As Worksheet
    Set sht = ActiveSheet
    
    'create a new ChartObject at position (48, 195) with width 400 and height 300
    Dim chtObj As ChartObject
    Set chtObj = sht.ChartObjects.Add(48, 195, 400, 300)
    
    'get refernce to chart object
    Dim cht As Chart
    Set cht = chtObj.Chart
    
    'create the new series
    Dim ser As Series
    Set ser = cht.SeriesCollection.NewSeries
    
    'set the SERIES formula
    '=SERIES(name, xData, yData, plotOrder)
    
    Dim formulaValue As String
    formulaValue = "=SERIES(" & _
        serName.Address(, , , True) & "," & _
        xData.Address(, , , True) & "," & _
        yData.Address(, , , True) & ",1)"
    
    ser.Formula = formulaValue
    ser.ChartType = xlXYScatterLines

End Sub

原始数据和结果图表

请注意,对于此图表,系列名称已正确设置,并具有所需单元格的范围。这意味着更新将传播到 Chart

StackOverflow 文档