通過修改 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 文件