使用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 – 扩展方法 ),但我不知道如何:
- 扩展一个特定的系列(比如只添加一个点到系列C1:C10和D1:D10
- 如何添加数据点而不需要将单元格添加到工作表。
任何帮助,将不胜感激。 谢谢
问题2
您可以使用系列对象上的value属性来设置单个系列上的值。
然而,在“帮助”中,它指出一系列值可以是
工作表上的范围或常量值的数组 ,
但不是两个 。
这意味着如果你想把系列值指定为一个范围,比如C1:C10,那么如果你想在系列中添加数据点的话,我想你将不得不添加单元格。
如果您不想添加单元格,则必须将所有值指定为数组常量。
问题1
要将数据点添加到特定的系列,我相信你将不得不select系列,并修改Values和XValues属性。
例:
将这些数据放入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当作范围和数组常量。