使用VBA将数据点添加到Excel图表

我有一个图表对象,有3个系列。 该系列从范围C1:C10,D1:D10和E1:E10获取Y值。 该值取决于A1:A10中的值(例如C1 = A1 + 6); 但是我正在将这些值与B1:10(它是一个Log-Normal图)中的值进行比较。

我正在计算VBA中的值。 由于在A1:A10中只有离散的点数,所以我想在图表中添加一些额外的兴趣点。 所以如果A1:A10包含整数1到10,我想绘制一个十进制数字3.5,而不必添加任何新的行到工作表。

从四处张望,我会认为这将是一些与Extend方法( MSDN – 扩展方法 ),但我不知道如何:

  1. 扩展一个特定的系列(比如只添加一个点到系列C1:C10和D1:D10
  2. 如何添加数据点而不需要将单元格添加到工作表。

任何帮助,将不胜感激。 谢谢

问题2

您可以使用系列对象上的value属性来设置单个系列上的值。

然而,在“帮助”中,它指出一系列值可以是

工作表上范围常量值数组

但不是两个

这意味着如果你想把系列值指定为一个范围,比如C1:C10,那么如果你想在系列中添加数据点的话,我想你将不得不添加单元格。

如果您不想添加单元格,则必须将所有值指定为数组常量。

问题1

要将数据点添加到特定的系列,我相信你将不得不select系列,并修改ValuesXValues属性。

例:

将这些数据放入Excel的“Sheet1”中,并将其绘制为“Chart1”。 y1是系列1,y2是系列2,y3是系列3。

ABCD 1 x y1 y2 y3 2 1 10 100 400 3 2 20 200 500 4 3 30 300 600 

现在,让我们将数据点添加到y2。

  ABCD 1 x y1 y2 y3 2 1 10 100 400 3 2 20 200 500 4 3 30 300 600 5 4 1000 

我们必须select系列(按数字或名称,在这种情况下,2或“y2”),并将Value属性设置为“C2:C5”

 'using ranges Charts("chart1").SeriesCollection("y2").Values = Worksheets("Sheet1").Range("C2:C5") 'using array constant Charts("chart1").SeriesCollection("y2").Values = Array(100, 200, 300, 1000) 

我们还将更改XValues属性,以便每个值都有一个XValue

 'using ranges Charts("chart1").SeriesCollection("y2").XValues = Worksheets("Sheet1").Range("A2:A5") 'using array constant Charts("chart1").SeriesCollection("y2").XValues = Array(1, 2, 3, 4) 

注意:

我们可以将值作为范围,将XValues作为数组常量,反之亦然。

我们也可以将Value和XValues作为范围,或者将两者都作为数组常量。

我们不能将值作为范围和数组常量。

我们不能把XValues当作范围和数组常量。