我是VBA的新手所以我正在努力做出我觉得应该是一个简单的宏。我已经在这里研究了很长时间试图解决它,但我无法理解什么是错的。我在excel中的行1到200中有200个系列。每个系列都有两个x值(在B和C中)和两个y值在(D和E)中,我试图制作一个XYScatterLine图。我想制作一个宏,将所有这200个系列添加到图表上。我试图在下面写一个宏,但它不起作用,我感到困惑。任何帮助将不胜感激!!
Sub graph()
Dim a
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLines
For a = 1 To 200
With ActiveChart
With .SeriesCollection.NewSeries
.XValues = Sheets(Sheet1).Range("B" & a & ":C" & a)
.Values = Sheets(Sheet1).Range("D" & a & ":E" & a)
.Name = "name"
End With
End With
Next
End Sub
我觉得我的错误始于.Xvalues行,因为图表生成但没有绘制系列。我非常感谢您提供的任何帮助!
答案 0 :(得分:1)
这有帮助吗?
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=[Add Series Name]"
ActiveChart.SeriesCollection(1).XValues = "=Sheet1!$B$1:$B$200"
ActiveChart.SeriesCollection(1).Values = "=Sheet1!$D$1:$D$200"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "=[Add Series Name]"
ActiveChart.SeriesCollection(2).XValues = "=Sheet1!$C$1:$C$200"
ActiveChart.SeriesCollection(2).Values = "=Sheet1!$E$1:$E$200"
如果它们与您的工作表完全匹配,您可能需要修改我使用的列引用。
我还要注意,此代码非常静态,如果您的数据集增加到超过200行,则不会发生变化。
答案 1 :(得分:1)
Sub graph()
Dim cht As Chart
Dim a, sht
Set sht = Sheets("Sheet1")
Set cht = ActiveSheet.Shapes.AddChart.Chart
cht.ChartType = xlXYScatterLines
For a = 1 To 19
With cht.SeriesCollection.NewSeries
.Name = "name"
.Values = sht.Range("D" & a & ":E" & a)
.XValues = sht.Range("B" & a & ":C" & a)
End With
Next
End Sub
答案 2 :(得分:0)
将工作表名称放在引号中。也就是说,改变这个:
Course course = new Course( … );
courses.add( course );
到此:
.XValues = Sheets(Sheet1).Range("B" & a & ":C" & a)
.Values = Sheets(Sheet1).Range("D" & a & ":E" & a)