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