【问题标题】:Creating a graph from a data set with a dynamic number of columns and rows从具有动态列数和行数的数据集创建图表
【发布时间】:2019-07-19 20:16:54
【问题描述】:

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

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

【问题讨论】:

  • 由于某种原因它停止工作,我重新输入它并再次开始工作,不完全确定为什么,抱歉
  • 没关系。如果还有其他问题,不要在这个答案上提出来;这是另一个问题。

标签: excel vba


【解决方案1】:

使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2018-10-04
    • 2015-07-28
    • 1970-01-01
    • 2014-09-27
    • 2021-03-14
    • 1970-01-01
    • 2012-01-13
    相关资源
    最近更新 更多