Excel 2007使用VBA创build许多图表

我一直在尝试使用VBA创build一些图表。 我用macrosloggingfunction开始,但没有太多进展。

我有一个可变数据集,我需要绘制每一行。 一个单元格是系列名称,数据是同一行上单元格的(固定)范围,并针对一系列date(顶行)绘制。

所以我所拥有的就是(单个图表)

Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Data").Range("A3") ActiveChart.SeriesCollection(1).Name = "='Data'!$A$3" ActiveChart.SeriesCollection(1).Values = "='Data'!$MO$3:$RY$3" ActiveChart.SeriesCollection(1).XValues = "='Data'!$MO$1:$RY$1" ActiveChart.Name = Sheets("Data").Range("A3") 

如果A3是名称数据的第一个单元格,我想循环每一行,为每个系列生成一个新的图表。

我已经设法从input框中获得起始点,但这并不是必须的。 这是为了我不使用别人。 如果它是从一个固定的点开始的,我会很高兴,然后循环到达一个空白的单元格。

我不能做的一点就是弄清楚如何为每次迭代生成单元格范围。

数据截图

{edit2} 示例图表的屏幕截图

在引用范围的地方,您可以使用variables来在每次迭代中“移动”引用。 举个例子,你想插入一些文本到列A的前10行,你可以写:

 Range("A1").Value = "Hello" Range("A2").Value = "Hello" Range("A3").Value = "Hello" Range("A4").Value = "Hello" etc... 

相反,你可以使用一个循环,通过使用循环variablesi在每次迭代中将Range引用向下移动一行:

 For i = 1 to 10 Range("A" & i).Value = "Hello" Next i 

你也可以根据需要调整参考值以获得所需的结果,例如Range("A" & i * 2).Value = "Hello"将把行的值加上由2。

如果要为数据中的每一行重复循环,可以使用Range("").End(xlDown).Rowfind底行的行号Range("").End(xlDown).Row同时将顶部单元格引用放入""标记,在你的情况下“A3”

把所有这一切放在一起,你正在寻找的东西沿线:

 for i = 3 to Range("A3").End(xlDown).Row 'Loop for each row from 3 to the bottom Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Data").Range("A" & i) ActiveChart.SeriesCollection(1).Name = "='Data'!$A" & i ActiveChart.SeriesCollection(1).Values = "='Data'!$MO" & i & ":$RY" & i ActiveChart.SeriesCollection(1).XValues = "='Data'!$MO$1:$RY$1" ActiveChart.Name = Sheets("Data").Range("A" & i) next i 

你可能需要调整上述,如果它不能如你所期望的那样工作,但我希望这可以帮助你弄明白。