是否有可能不是从范围创建图表(例如双Y轴折线图),而是从阵列数据创建?如果是这样,怎么样?从阵列数据创建图表,而不是范围
回答
是的。您可以将数组分配给图表上Series
对象的XValues
和Values
属性。例如:
Dim c As Chart
Dim s As Series
Dim myData As Variant
Set c = ActiveChart ' Assumes a chart is currently active in Excel...
Set s = c.SeriesCollection(1)
myData = Array(9, 6, 7, 1) ' or whatever
s.Values = myData
您可以指定数组在Excel 2007年起,但在以前的版本中图表系列我相信这是每个系列的长度在255个字符的限制。我已经使用来解决此限制的方法被示出在下面的随机游走例如:
Sub ChartArray()
Dim x(0 To 1000, 0 To 0) As Double
Dim y(0 To 1000, 0 To 0) As Double
x(0, 0) = 0
y(0, 0) = 0
For i = 1 To 1000
x(i, 0) = i
y(i, 0) = y(i - 1, 0) + WorksheetFunction.NormSInv(Rnd())
Next i
Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
With ActiveChart.SeriesCollection
If .Count = 0 Then .NewSeries
If Val(Application.Version) >= 12 Then
.Item(1).Values = y
.Item(1).XValues = x
Else
.Item(1).Select
Names.Add "_", x
ExecuteExcel4Macro "series.x(!_)"
Names.Add "_", y
ExecuteExcel4Macro "series.y(,!_)"
Names("_").Delete
End If
End With
ActiveChart.ChartArea.Select
End Sub
的另一种方法是将名称指定到阵列(类似于上面的解决方法),然后设置一系列指分配的名称。只要保存为xls格式,在所有版本中都可以正常工作,但在保存为新的xlsx/xlsm/xlsb格式时,似乎存在8192个字符的命名数组的长度限制。
出于好奇,ExecuteExcel4Macro'技巧在2007年及之后不起作用吗?它在Excel 2007中试用了它,并且该图表不包含任何数据。 –
没有旧的Excel 4命令似乎无法在更高版本的图表上工作,这很烦人。 –
好的,谢谢。 +1为有趣/可怕的方法! –
- 1. 创建列表从数据范围
- 2. 是否有范围函数来创建数字列表?
- 3. 创建范围/桶两列
- 4. 创建图表时Excel变量范围
- 5. 如何使数字范围从5到-5而不是范围从5到10?
- 6. R创建一个列表,而不是数据帧
- 7. 创建日期范围表
- 8. 使用范围创建表
- 9. 从不同的数据创建图表
- 10. HBM2DDL - 创建数据库视图而不是表?
- 11. 创建循环范围的阵列,可以组合范围到Fixnum对象
- 12. 从VBA范围创建数组
- 13. 从数字范围创建字符串
- 14. 为谷歌图表创建一个数据表格阵列
- 15. SQL整数范围在创建表
- 16. 检索数据的特定范围从阵列(爪哇)
- 17. 如何在(-1,1)范围内独占而不是包含范围内的数据
- 18. 范围不是从模板创建不能使用FilterParameters错误
- 19. IndexError:列表索引超出范围(它必须是字典,而不是列表)
- 20. SQL:从日期列表创建Orignial生效日期范围
- 21. 根据单元格值调整范围以创建图表
- 22. 创建从CSV列表阵列
- 23. “范围”的指导链接功能是根范围,而不是指令范围
- 24. 按号码上点击阵列,而不使用全球范围
- 25. vba图表的动态数据范围
- 26. Excel VBA - 获取图表数据范围
- 27. SQL创建范围
- 28. 从关系数据库表创建矩阵视图
- 29. 阵列范围问题
- 30. 使用范围阵列
[可以在运行时设置excel图表的动态数据,而不是Excel.Range](http://stackoverflow.com/questions/7380266/to-set-dynamic-data-of-excel-chart-at -runtime-and-not-excel-range) – assylias
@assylias:这不是一个明显的重复...语言是C#,而不是VBA。这些概念几乎是一样的,但一个成功的例子看起来并不相同。 –
@assylias另外我没有看到其他问题,因为实际上被回答 – brettdj