是否可以创建一个图表(例如双Y轴线图),而不是从Ranges创建,而是从Array数据创建?如果是这样,怎么样?
答案 0 :(得分:14)
是。您可以将数组分配给图表上XValues
对象的Values
和Series
属性。例如:
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
答案 1 :(得分:9)
您可以在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个字符的命名数组似乎存在长度限制。