我正在设置一个电子表格,以根据从csv文件获取的多个数据集自动生成图形。该数据没有特定的行数或列数,但是X轴值始终在D列中。我想将D之后的每一列用于一系列单独的Y轴值,并使用一个循环到达空白列时结束。 我希望我的图表位于标有“图形”的单独工作表上,而我的数据仍位于“数据”工作表上。
我试图创建要与间接函数一起使用的范围,但据我所知,它与图形制作函数不兼容。
Sub Macro4()
ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(1).Name = "=Data!$E$1"
ActiveChart.FullSeriesCollection(1).XValues = "=Data!$D:$D"
ActiveChart.FullSeriesCollection(1).Values = "=Data!$E:$E"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(2).Name = "=Data!$F$1"
ActiveChart.FullSeriesCollection(2).XValues = "=Data!$D:$D"
ActiveChart.FullSeriesCollection(2).Values = "=Data!$F:$F"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(3).Name = "=Data!$G$1"
ActiveChart.FullSeriesCollection(3).XValues = "=Data!$D:$D"
ActiveChart.FullSeriesCollection(3).Values = "=Data!$G:$G"
End Sub
我希望它像这样提供输出图,但是要循环检测第一个空白列,并在该点上创建数据序列。 谢谢
答案 0 :(得分:0)
使用R1C1非常简单:
Sub Macro 4()
Dim i As Long, LCol As Long, c As Object, s As String
LCol = ActiveSheet.Cells(1, .Columns.Count).End(xlToLeft).Column
s = "=Data!$D:$D"
Set c = ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Chart
For i = 5 To LCol
With c.SeriesCollection.NewSeries
.Name = "=Data!$R1C" & i
.XValues = s
.Values = "=Data!$C" & i
End With
Next i
End Sub