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

  • 本文关键字:单个 系列 范围 VBA excel vba charts
  • 更新时间 :
  • 英文 :


我对VBA相当陌生。我在 excel 的单个选项卡上有 100+ 个图表,其中包含多个数据系列。为了创建这些,我只需构建一个图表并手动复制到每列中。每个图表都相同,但四个数据系列中的一个(共)的数据范围除外。仅对于这些系列,我想更改每个图表的 YValues 以引用下一列(因此 chart1 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 = 范围范围(单元格(4, i), 单元格(100, i))

听起来很简单,但在互联网上搜索了很远很远,找不到如何编辑图表上的特定数据系列范围,只能编辑整个图表数据范围。感谢任何帮助。

谢谢

而不是YValues,它只是Values...

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

我的最终代码: 通过复制模板图表创建任意数量的图表 将新图表并排放置一行 根据列引用设置新的图表标题 调整指定图表系列的范围

子图表生成器()

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

最新更新