VBA для изменения диапазона значений одного / определенного ряда Y на основе столбца для нескольких диаграмм

#excel #vba #charts

#excel #vba #Диаграммы

Вопрос:

Я довольно новичок в VBA. У меня более 100 диаграмм с несколькими рядами данных на одной вкладке в Excel. Чтобы создать их, я просто построил одну диаграмму и вручную скопировал в каждый столбец. Каждая диаграмма одинакова, за исключением диапазона данных для одного (из четырех) рядов данных. Только для этих рядов я хочу изменить значения Y для каждой диаграммы, чтобы ссылаться на следующий столбец (таким образом, диапазон значений диаграммы 1 Y равен, скажем, A4: A100, диаграмма 2 — B4: B100, диаграмма 3 — C4: C100 и так далее).

Я думал о цикле для выбора каждой диаграммы, выбора рассматриваемой серии и настройки диапазона Y.

Что-то вроде (не работает), где я бы увеличивал на 1 каждый раз, перемещая диапазон в следующий столбец

 ActiveChart.SeriesCollection(1).YValues = RangeRange(Cells(4, i), Cells(100, i))
  

Однако это кажется возможным только для значений Xvalues — похоже, эквивалентного свойства Yvalue не существует.

ActiveChart.SeriesCollection(1).XValues = RangeRange(ячейки (4, i), ячейки (100, i))

Звучит просто, но я искал в Интернете повсюду и не мог найти, как редактировать определенный диапазон рядов данных на диаграмме, только весь диапазон данных диаграммы. Ценю любую помощь.

Спасибо

Ответ №1:

вместо YValues этого это просто Values

       ActiveChart.SeriesCollection(1).Values = Range(Cells(4, i), Cells(100, i))
  

Комментарии:

1. Кроме того, это Range не RangeRange так .

2. Спасибо вам обоим. Это работает. Хотел поделиться своим окончательным кодом, но, похоже, он ограничен количеством символов в комментарии

Ответ №2:

Мой окончательный код: создает любое количество диаграмм путем копирования шаблона диаграммы размещает новые диаграммы рядом друг с другом в строке устанавливает новый заголовок диаграммы на основе ссылки на столбец настраивает диапазон для указанной серии диаграмм

Sub ChartGenerator()

 Dim i As Integer
Dim cht As ChartObject
Dim dChart As Object
Dim NumCharts As Integer
Dim myRange As Range


Set myRange = ActiveSheet.Range("G3:DD3")

NumCharts = Application.WorksheetFunction.CountA(myRange)

For i = 1 To NumCharts

' copy template chart called "charttemplate"
 Set dChart = ActiveSheet.ChartObjects("charttemplate").Duplicate
 dChart.Select

' place it correctly
dChart.Top = ActiveSheet.ChartObjects("charttemplate").Top   ActiveSheet.ChartObjects("charttemplate").Height   10
dChart.Left = (i - 1) * dChart.Width   ActiveSheet.ChartObjects("charttemplate").Left

' set chart title
dChart.Name = "newchart" amp; "" amp; i
dChart.Chart.HasTitle = True
dChart.Chart.ChartTitle.Text = "='" amp; ActiveSheet.Name amp; "'!R3C" amp; i   6

' adjust series
ActiveChart.SeriesCollection(1).Values = Range(Cells(4, i   6), Cells(10000, i   6))

Next i

End Sub