Как передать данные из массива непосредственно в диаграмму, минуя сводную таблицу? - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы