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

3 excel vba

我有一个图表对象,有 3 个系列。该系列从 C1:C10、D1:D10 和 E1:E10 范围获取 Y 值。该值取决于A1:A10 中的值(例如C1 = A1+6);但我将这些值与 B1:10 中的值(它是对数正态图)绘制成图表。

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

环顾四周,我认为这将是使用Extend方法(MSDN - Extend Method)的方法,但我不确定如何:

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

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

imf*_*isd 5

问题2

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

但是,在帮助中,它指出一系列值可以是

工作表上的范围或常量值数组

但不能两者兼而有之

这意味着,如果您想将系列值指定为范围(例如 C1:C10),那么我认为如果您想在系列中添加数据点,则必须添加单元格。

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

问题1

要将数据点添加到特定系列,我相信您必须选择该系列,并修改ValuesXValues属性。

例子:

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

     A    B     C     D
1    x    y1    y2    y3
2    1    10    100   400
3    2    20    200   500
4    3    30    300   600
Run Code Online (Sandbox Code Playgroud)

现在,让我们向 y2 添加一个数据点。

     A    B     C     D
1    x    y1    y2    y3
2    1    10    100   400
3    2    20    200   500
4    3    30    300   600
5    4          1000
Run Code Online (Sandbox Code Playgroud)

我们必须选择系列(按数字或按名称,在本例中为 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)
Run Code Online (Sandbox Code Playgroud)

我们还将更改 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)
Run Code Online (Sandbox Code Playgroud)

笔记:

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

我们还可以将 Values 和 XValues 作为范围或同时作为数组常量。

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

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