Создание диаграммы из данных массива, а не диапазона
Можно ли создать диаграмму (например, двойную диаграмму оси Y-оси) не из диапазонов, а из данных массива? Если да, то как?
Ответы
Ответ 1
Да. Вы можете назначить массивы свойствам 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
Ответ 2
Вы можете назначить массивы для диаграмм серии в 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 символов.