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