创建带有范围和固定名称的图表

可以通过直接使用定义图表数据的 Series 对象来创建图表。为了在没有现有图表的情况下到达 Series,你可以在给定的 Worksheet 上创建一个 ChartObject,然后从中获取 Chart 对象。使用 Series 对象的好处是你可以通过参考 Range 对象来设置 ValuesXValues。这些数据属性将正确定义 Series 并引用这些范围。这种方法的缺点是在设置 Name 时不会处理相同的转换; 它是固定值。它不会根据原始 Range 中的基础数据进行调整。检查 SERIES 公式,很明显名称是固定的。这必须通过直接创建 SERIES 公式来处理。

用于创建图表的代码

请注意,此代码包含 ChartWorksheet 的额外变量声明。如果不使用它们,可以省略。但是,如果要修改样式或任何其他图表属性,它们可能很有用。

Sub CreateChartWithRangesAndFixedName()

    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 reference to chart object
    Dim cht As Chart
    Set cht = chtObj.Chart
    
    'create the new series
    Dim ser As Series
    Set ser = cht.SeriesCollection.NewSeries
    
    ser.Values = yData
    ser.XValues = xData
    ser.Name = serName
    
    ser.ChartType = xlXYScatterLines

End Sub

代码运行后的原始数据/范围和生成的 Chart

请注意,SERIES 公式包含系列名称的 B,而不是对创建它的 Range 的引用。

StackOverflow 文档