从具有动态列和行数的数据集创建图形

时间:2019-07-19 11:07:00

标签: excel vba

我正在设置一个电子表格,以根据从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

我希望它像这样提供输出图,但是要循环检测第一个空白列,并在该点上创建数据序列。 谢谢

1 个答案:

答案 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