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