【问题标题】:Creating an Excel macro for multiple graphs with the same x-values but different y-values为具有相同 x 值但不同 y 值的多个图形创建 Excel 宏
【发布时间】:2013-11-27 18:16:36
【问题描述】:

我正在尝试通过宏在 Excel 中自动创建图表。 基本上我有很多数据(41 列,从 C 列到 AQ 列),每一个都包含另一个“名称”。在一列中有两个系列在两个不同的行部分(一个从第 3 行到第 8 行,一个从第 12 行到第 17 行)。

我想要每列一张图,所以我总共有 41 张图。每个图表包含两个系列。 B 列中是 X 轴上的值,这对于每个图表都是相同的。

目的是使用 y 轴值创建一个 for next 循环,并同时创建它们。

我已经尝试对第一部分进行编码(只需创建一个图表,在 x 轴上使用 B3:B8 的值,在 y 轴上使用 C3:C8 的值,第二个系列仅向下几行。

我收到一个错误,但我不明白为什么,我尝试了不同的方法,但始终没有奏效。错误出现在这一行: ActiveChart.SeriesCollection(1).Values = Range(Cells(3, 3), Cells(8, 3)).Value

有没有人知道可能出了什么问题或如何解决这个问题?

Sub Macro5()

    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Name = "='Blad1'!$A$1"
    ActiveChart.SeriesCollection(1).XValues = "='Blad1'!$B$3:$B$8"
    ActiveChart.SeriesCollection(1).Values = Range(Cells(3, 3), Cells(8, 3)).Value
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "='Blad1'!$A$10"
    ActiveChart.SeriesCollection(2).XValues = "='Blad1'!$B$12:$B$17"
    ActiveChart.SeriesCollection(2).Values = Range(Cells(12, 3), Cells(17, 3)).Value
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
    ActiveChart.Axes(xlValue).MajorGridlines.Select
    Selection.Delete
    ActiveChart.SeriesCollection(1).Trendlines.Add
    ActiveChart.SeriesCollection(1).Trendlines(1).Select
    Selection.DisplayEquation = True
    Selection.DisplayRSquared = True    
    ActiveChart.SeriesCollection(2).Trendlines.Add
    ActiveChart.SeriesCollection(2).Trendlines(1).Select
    Selection.DisplayEquation = True
    Selection.DisplayRSquared = True

End Sub

【问题讨论】:

  • 您遇到的错误是什么?

标签: excel vba graph charts


【解决方案1】:

范围不合格,并且您使用 .Values 将其转换为的数组可能不被 Excel 理解。

改变

ActiveChart.SeriesCollection(1).Values = Range(Cells(3, 3), Cells(8, 3)).Value

ActiveChart.SeriesCollection(1).Values = Worksheets("Blad1").Range(Cells(3, 3), Cells(8, 3))

或到

ActiveChart.SeriesCollection(1).Values = "='Blad1'!$C$3:$C$8"

【讨论】:

    【解决方案2】:

    在 excel 2007 中,SeriesCollection.Add() 需要一个范围。

    【讨论】:

    • 是的。我总是使用 Set NewSrs = SeriesCollection.NewSeries,然后使用 NewSrs 添加数据并应用格式。
    猜你喜欢
    • 1970-01-01
    • 2015-07-30
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多