在Excel Graph中,如何将宏转换为选择多列数据为x和y以便在空白行下方停止?

时间:2016-06-18 19:31:52

标签: excel vba graph

Starting off-manually selecting the data

确定。我将解释我想要实现的目标......我有一个数据图表,我希望使用列D和E中的数据绘制带有标记的折线图,不包括标题作为x轴数据上的点和列G到L作为y轴上的点。我正在使用录制宏来查看手动选择数据的代码,如步骤1所示。虽然最后一行是32,如当前宏所述,我想改变它,以便它能够计算出最后一行本身...使用end(x1down)函数。

codes obtained by recording macro when inserting line graph with markers

Range("D2:E32,G2:L32").Select
Range("G2").Activate
Source:=Range("Sheet1!$D$2:$E$32,Sheet1!$G$2:$L$32" )

那么如何通过更改上面的这3行代码来实现我的目标呢?此时,范围指定为D2:E32,G2:L32,因为我手动定义了最后一行。那么我该如何重写它以包括.endx1down来覆盖两个部分中的多列,即... D2到E32和G2到L32。对于行Source:= .... etc也是如此。

2 个答案:

答案 0 :(得分:0)

以下几行中的内容应该可以解决问题...

Dim Ws as Worksheet, R as Range, LastRow as long
Set Ws = ' some worksheet, maybe the active worksheet, I don't know the context.
Set R = Ws.Range("G2") ' for example - any row inside your data except the last. Any column containing contiguous columns down to the one you want.
LastRow = R.End(xlDown).Row

答案 1 :(得分:0)

我想这是在ChartWizard中使用的。在大多数情况下,执行此操作的方法是创建2个范围,一个用于值(y)轴,另一个用于图表的类别(x)轴。称他们为Rx和Ry。然后你拿他们的联合(称之为Ru)并将其作为源:= Ru ...

Dim Rx as Range, Ry as Range, Ru as Range
Set Rx = ' some range for the x axis.
Set Ry = ' soem range(s) for the value axis.
Set Ru = Union(Rx, Ry)
With YourChart
    .ChartWizard Source:=Ru, ' etc. etc
End With

希望这就是你想要的......