【问题标题】:Excel VBA Add Series to Radar Chart from ArrayExcel VBA将系列添加到数组中的雷达图
【发布时间】:2016-05-23 20:41:18
【问题描述】:

我在使用 VBA 添加系列来制作填充雷达图时遇到问题。可能有更好的方法来做到这一点,但要构建所需的图表(没有 VBA),我在工作表中创建了一个 (120,12) 的表,在其中添加一个“填充雷达”图表范围 A1:L120,然后手动更新公式栏:

=SERIES("name1",,'Sheet1'!$A$1:$A$120,1)
=SERIES("name2",,'Sheet1'!$B$1:$B$120,2)
etc for 12 more series

这个想法是在每列中只有 11 个非零值,制作一个如下所示的图表:

这是我通常用来制作图表的 Range 的前 3 列的一个不好的例子:

我希望能够在 VBA 中执行此操作,但不是从工作表的范围中获取值,而是来自 (120,12) 数组。我已经阅读了几个具有相似意图的不同页面,但我还没有看到一个解决这个特定问题的页面。一个大问题是每个 SERIES 都需要来自我的数组中的单个列,并且许多页面说不可能从数组中提取单个列以放入 =SERIES 函数中。

不过,总的来说,我正在努力解决的一个大问题是使用数组中的值填充图表。非常感谢您对此事的任何帮助。

谢谢!

【问题讨论】:

标签: excel vba charts series


【解决方案1】:

This post partially answers the question

我如下图所示设置数据。

然后,以下代码创建具有多个系列的图表。

Sub CreateChartFromArray()

Dim c As Chart
Dim s As Series
Dim myData As Variant

ActiveSheet.Shapes.AddChart.Select
Set c = ActiveChart
ActiveChart.ChartType = xlRadar

For i = 1 To 12
myData = Range(Cells(1, i), Cells(101, i)).Value
    Set s = c.SeriesCollection.NewSeries()
    s.Values = myData
Next

End Sub

【讨论】:

  • 感谢您的回复,但不幸的是,此解决方案需要使用一系列预先填充的单元格来制作图表。我希望直接从数组创建图表。
  • 如果将“s.Values = myData”替换为“s.Values = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)”,解决方法仍然有效。
  • 感谢 bwyn,它确实帮助我找到了最终解决方案。我最终需要一个额外的行来从我的数组中提取每一列,但是从那时起你的代码就会有所帮助。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多