VBA根据多个图表的列更改单个/特定系列的Y值范围

时间:2019-04-11 11:12:32

标签: excel vba charts

我刚接触VBA。我在excel的单个选项卡上有100多个图表,其中包含多个数据系列。要创建这些图表,我只需构建一个图表并手动复制到每一列中。除(四个)数据系列之一的数据范围外,每个图表都相同。仅对于这些系列,我想更改每个图表的YValues以引用下一列(因此,chart1的Y值范围是A4:A100,图表2是B4:B100,图表3是C4:C100,依此类推) 。

我在想一个循环,以选择每个图表,选择有问题的序列并调整Y范围。

类似(不起作用)的情况,每次将范围移到下一列时我都会上调

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

但是,这似乎仅对Xvalues可行-似乎没有等效的Yvalue属性。

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

听起来很简单,但在互联网上四处搜寻,无法找到仅在整个图表数据范围内如何编辑图表上特定数据系列范围的方法。感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:0)

不是YValues,而是Values ...

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

答案 1 :(得分:0)

我的最终代码: 通过复制模板图创建任意数量的图 连续放置新图表 根据列参考设置新的图表标题 调整指定图表系列的范围

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" & "" & i
dChart.Chart.HasTitle = True
dChart.Chart.ChartTitle.Text = "='" & ActiveSheet.Name & "'!R3C" & i + 6

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

Next i

End Sub