是否有可能不是從範圍創建圖表(例如雙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