Excel 2007使用VBA创建许多图表
我一直在尝试使用VBA创建许多图表。我开始使用宏记录功能,但进展不大 我有一个变量数据集,我需要为它绘制每一行的图表。一个单元格是序列名称,数据是同一行上的(固定)单元格范围,并根据一系列日期(顶行)打印 所以我得到的是这个(对于单个图表) 如果Excel 2007使用VBA创建许多图表,excel,vba,charts,Excel,Vba,Charts,我一直在尝试使用VBA创建许多图表。我开始使用宏记录功能,但进展不大 我有一个变量数据集,我需要为它绘制每一行的图表。一个单元格是序列名称,数据是同一行上的(固定)单元格范围,并根据一系列日期(顶行)打印 所以我得到的是这个(对于单个图表) 如果A3是第一个包含名称数据的单元格,我想循环每一行,为每个系列生成一个新图表 我已经设法从一个输入框中输入了起点,但这并不是真正必要的。这是给我用的,不是给别人用的。如果它从一个固定点开始循环,直到到达一个空白单元格,我会很高兴 我不能做的一点是,找出如何
A3
是第一个包含名称数据的单元格,我想循环每一行,为每个系列生成一个新图表
我已经设法从一个输入框中输入了起点,但这并不是真正必要的。这是给我用的,不是给别人用的。如果它从一个固定点开始循环,直到到达一个空白单元格,我会很高兴
我不能做的一点是,找出如何为每次迭代生成单元格范围
数据截图
示例图表的屏幕截图
当引用范围时,您可以使用变量在每次迭代中“移动”引用。 例如,如果要在A列的前10行中插入一些文本,可以编写:
Range("A1").Value = "Hello"
Range("A2").Value = "Hello"
Range("A3").Value = "Hello"
Range("A4").Value = "Hello"
etc...
相反,您可以使用一个循环,通过使用循环变量i
,在每次迭代中将范围
引用向下移动一行:
For i = 1 to 10
Range("A" & i).Value = "Hello"
Next i
如果需要,您还可以调整行中的引用以获得所需的结果,例如范围(“a”&i*2)。Value=“Hello”
将通过将i
的值乘以2,将文本添加到偶数行2-20
如果要对数据中的每一行重复循环,则可以使用范围(“”.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
如果上面的内容不符合您的预期,您可能需要对其进行调整,但我希望这能帮助您解决问题。在引用范围的地方,您可以使用变量在每次迭代中“移动”引用。 例如,如果要在A列的前10行中插入一些文本,可以编写:
Range("A1").Value = "Hello"
Range("A2").Value = "Hello"
Range("A3").Value = "Hello"
Range("A4").Value = "Hello"
etc...
相反,您可以使用一个循环,通过使用循环变量i
,在每次迭代中将范围
引用向下移动一行:
For i = 1 to 10
Range("A" & i).Value = "Hello"
Next i
如果需要,您还可以调整行中的引用以获得所需的结果,例如范围(“a”&i*2)。Value=“Hello”
将通过将i
的值乘以2,将文本添加到偶数行2-20
如果要对数据中的每一行重复循环,则可以使用范围(“”.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
如果上面的内容不完全符合您的预期,您可能需要对其进行调整,但我希望这能帮助您解决问题。嗨,Brian,您不太清楚您在尝试什么。你能发布一张你的数据的图片吗?嗨,布莱恩,现在还不清楚你在尝试什么。你能发布一张你的数据的图片吗?太好了。是的,这就是我想做的。现在我需要对现有的工作表进行一些错误检查,而不是每次迭代都添加一个新的工作表,但这非常感谢。太好了。是的,这就是我想做的。现在我需要对现有的工作表进行一些错误检查,而不是每次迭代都添加一个新的工作表,但这非常感谢。