从数组数据创build图表,而不是范围

是否有可能创build一个图表(例如双Y轴线图)而不是从范围,但从arrays数据? 如果是这样,怎么样?

是。 您可以将数组分配给图表上的Series对象的XValuesValues属性。 例:

 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个字符的命名数组的长度限制。