VBA图表中的系列公式太长错误

时间:2015-07-03 07:58:35

标签: vba excel-vba charts error-handling excel

我有23个部门的以下数据。 第一行部门单元格合并。

我的数据类似于图片中的数据in this link.我只有[23个数字''和'行为'。

  • 我正在尝试使用VBA创建两个图表;一个用于实际,一个用于以下代码的总百分比。
  • 我得到两张图,直到在i列的For循环中,值分别不超过35和36而不是29和30。
  • 当我超过35和36的值时,它显示“系列公式太长”'错误和图表未绘制。

为什么会这样?

Sub TwoCharts11()

  Dim rChart1 As Range
  Dim rChart2 As Range
  Dim iColumn As Long
  Dim cht1 As Chart
  Dim cht2 As Chart

  Const StrtRow As Long = 2
  Const EndRow As Long = 6

  With ActiveSheet

   Set rChart1 = .Range(.Cells(StrtRow, "B"), .Cells(EndRow, "B"))
   Set rChart2 = .Range(.Cells(StrtRow, "B"), .Cells(EndRow, "B"))

   For iColumn = 3 To 29 Step 2
       Set rChart1 = Union(rChart1, .Range(.Cells(StrtRow, iColumn), .Cells(EndRow, iColumn)))
   Next

   For iColumn = 4 To 30 Step 2
       Set rChart2 = Union(rChart2, .Range(.Cells(StrtRow, iColumn), .Cells(EndRow, iColumn)))
   Next

   Set cht1 = .Shapes.AddChart.Chart
   Set cht2 = .Shapes.AddChart.Chart

   With cht1
    .Parent.Left = .Parent.Left - .Parent.Width / 2
    .ChartType = xlColumnClustered
    .SetSourceData rChart1
   End With

   With cht2
    .Parent.Left = .Parent.Left + .Parent.Width / 2
    .ChartType = xlColumnClustered
    .SetSourceData rChart2
   End With

  End With

End Sub

我还有posted my question on the following links.

1 个答案:

答案 0 :(得分:0)

图表系列公式(选择图表并查看公式栏)如下所示:

=SERIES(,Sheet1!$B$5:$F$5,Sheet1!$G$5:$K$5,1)

表示

=SERIES({series name, optional},{x values},{y values},{plot order})

将不连续的范围组合成X和Y值时,系列公式会变大:

=SERIES(,(Sheet1!$B$2,Sheet1!$D$2,Sheet1!$F$2,Sheet1!$H$2,Sheet1!$J$2),(Sheet1!$C$2,Sheet1!$E$2,Sheet1!$G$2,Sheet1!$I$2,Sheet1!$K$2),1)

系列公式的每个部分都有严格的字符限制,少于256个字符,此时它会失败,并显示您已经看到的错误消息。

@bonCodigo建议将数据从不连续的排列(如屏幕截图中的第一个彩色行;紫色= X值,蓝色= Y值)转换为连续排列(如第二个)。图表看起来是一样的,但第二个中的公式更简单,并且不会给你错误。

enter image description here