使用VBA更改图表中的数据范围

时间:2018-09-20 15:56:45

标签: excel vba charts

由于我对VBA中的Chart对象一点都不熟悉,所以一直困扰着我几个小时的问题一直困扰着我。

这是我的图表:

enter image description here

我要做什么::更改两个轴的数据范围,问题是无法找出一种编辑图表序列的方法。

感谢您的四项帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用

With Workbooks(bookname).Charts(Chartname)
    .SeriesCollection.NewSeries
    .SeriesCollection(i).XValues = YourXs
    .SeriesCollection(i).values = YourYs
end with

您可以使用索引i选择要编辑的系列。实际上,这会设置(X,Y)配对,而下面的内容只会更改图表所示的范围。

要更改Y轴的边界,可以使用

.Axes(xlValue).MinimumScale = 
.Axes(xlValue).MaximumScale = 

要更改x轴的边界,请使用

.Axes(xlCategory).MinimumScale = 
.Axes(xlCategory).MaximumScale = 

答案 1 :(得分:0)

您说过要更改

= SERIES(“ SO2 U5”,'CEMS_U6_YTD 2018'!$ B $ 2165:$ B $ 2303,'CEMS_U5_YTD 2018'!$ D $ 2165:$ D $ 2312,1)

对此

= SERIES(“ SO2 U5”,'CEMS_U6_YTD 2018'!$ C $ 2165:$ C $ 2303,'CEMS_U5_YTD 2018'!$ D $ 2165:$ D $ 2312,1)

这可能很简单

ActiveChart.SeriesCollection(1).Formula = _
  "=SERIES(""SO2 U5"",'CEMS_U6_YTD 2018'!$C$2165:$C$2303,'CEMS_U5_YTD 2018'!$D$2165:$D$2312,1)"

请注意将序列名称的双引号加倍。

但是,由于仅更改X值,因此可以使用以下方法:

ActiveChart.SeriesCollection(1).XValues = "='CEMS_U6_YTD 2018'!$C$2165:$C$2303"

ActiveChart.SeriesCollection(1).XValues = Worksheets("CEMS_U6_YTD 2018").Range("$C$2165:$C$2303")

我已经写了一个有关使用VBA编辑系列公式的教程:Change Series Formula – Improved Routines