使用VBA在xyscatter图中绘制所需范围

时间:2016-02-03 14:59:12

标签: excel-vba charts vba excel

我正在尝试创建一个xy图,其中x值是时间轴(列A),y值是在其他列中。 (在示例中只有C和D) 当我从下面尝试我的代码时,我得到一个带有时间轴的图形(所以列A)和y值所有其他列(B,C,D,E,...)是不需要的。

我可以看到.seriescollection(1)和(2)覆盖了默认的y值(因为我的范围较小),但所有其他的(列B,D,E,......)仍然保留在图表。

有什么想法?提前谢谢!

    Sub grafieken()
'
' grafieken Macro
'
Dim sh As Worksheet
Dim chrt As Chart
Dim naaaam As String

naaam = ActiveWorkbook.ActiveSheet.Name

Set sh = ActiveWorkbook.Worksheets(naaam)
Set chrt = sh.Shapes.AddChart.Chart
With chrt
    'Data?
    .ChartType = xlXYScatter
    .SeriesCollection.NewSeries
    .SeriesCollection(1).Name = sh.Range("$C$1")
    .SeriesCollection(1).XValues = sh.Range("$A$2:$A$11")
    .SeriesCollection(1).Values = sh.Range("$C$2:$C$11")
    .SeriesCollection(2).Name = sh.Range("$D$1")
    .SeriesCollection(2).XValues = sh.Range("$A$2:$A$11")
    .SeriesCollection(2).Values = sh.Range("$D$2:$D$11")

    'Titles?
    .HasTitle = True
    .ChartTitle.Characters.Text = naaam

End With

End Sub

1 个答案:

答案 0 :(得分:0)

  Sub grafieken()

Dim MySh As Worksheet
Dim chrt As Chart
Dim naaaam As String

naaam = ActiveWorkbook.ActiveSheet.Name

Set MySh = ActiveWorkbook.Worksheets(naaam)
Set chrt = MySh.Shapes.AddChart.Chart

 With chrt
'Data?
.SetSourceData Source:=Sheets(naaam).Range("A1:B11")
.ChartType = xlXYScatter
.SeriesCollection.Add Source:=ActiveSheet.Range("E1:E11")
'.SeriesCollection.NewSeries
.SeriesCollection(1).Name = ActiveSheet.Range("$C$1")
.SeriesCollection(1).XValues = ActiveSheet.Range("$A$2:$A$11")
.SeriesCollection(1).Values = ActiveSheet.Range("$C$2:$C$11")

'Titles?
.HasTitle = True
.ChartTitle.Characters.Text = naaam

End With

End Sub

我找到了一种方法,我首先需要为第一个系列定义源数据,然后将它们更改为我想要的数据,这样就不会出现不需要的系列。