通過修改 SERIES 公式建立圖表
要完全控制新的 Chart 和 Series 物件(尤其是動態 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。
