Как передать данные из массива непосредственно в диаграмму, минуя сводную таблицу? - VBA
Формулировка задачи:
Эти строчки передают данные по Х и У из диапазонов В7:Н7, В8:Н8 и затем на их основе строится диаграмма:
Но для этого нужно, чтобы в ячейках В7:Н7, В8:Н8 присутствовали соответствующие данные. Вопрос: как передать данные в диаграмму напрямую, минуя лист Excel? Например, у меня будут два массива X_Array(N), Y_Array(N), где N - заданное число. Все элементы этих массивов известны (определяются в ходе расчета). Но N может меняться, поэтому не хотелось бы заносить значения элементов массивов на лист Excel.
Вот полный код процедуры, если что:
Решение задачи: «Как передать данные из массива непосредственно в диаграмму, минуя сводную таблицу?»
textual
Листинг программы
Sub Diagr()
If ActiveSheet.ChartObjects.Count Then ActiveSheet.ChartObjects.Delete
Application.ScreenUpdating = False
With ActiveSheet.ChartObjects.Add(Range("A10").Left, Range("A10").Top, 450, 300)
With .Chart
.ChartType = xlLineMarkers
.HasLegend = False
.SeriesCollection.Add Source:=Range("A1:A2") 'формально
.SeriesCollection(1).XValues = Array("май", "июнь", "июль")
.SeriesCollection(1).Values = Array(3, 5, 4)
' Title
.HasTitle = True
.ChartTitle.Text = "= Лист1!R1C3"
.ChartTitle.Font.Size = 10
' X axis
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "= Лист1!R20C1"
.Axes(xlCategory, xlPrimary).AxisTitle.Font.Size = 10
.Axes(xlCategory, xlPrimary).TickLabels.Font.Size = 10
' Y axis
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "= Лист1!R21C1"
.Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 10
.Axes(xlValue, xlPrimary).TickLabels.Font.Size = 10
.Deselect
Application.ScreenUpdating = True
End With
End With
End Sub