我是 VBA 编码新手,需要您的帮助!
我有以下数据集。我有很多区域,我想在自己的图表中单独显示每个区域的数据。
年份 | 区域1 | 区域2 | 区域3 |
---|---|---|---|
2017 | 10 | 60 | 70 |
2018 | 20 | 50 | 80 |
2019 | 30 | 40 | 90 |
以下简单代码允许我创建预期的图表工作表,但仅限于一个数据系列:Sheet("Data_Source").Range(B1:B8) 中的数据系列。
Sub Add_Chart_Tab()
Dim MyChart As Chart
Set MyChart = Charts.Add
With MyChart
.SetSourceData Source:=Sheets("Data_Source").Range("B1:B8")
.SeriesCollection(1).XValues = "=Data!$A$2:$A$8"
End With
End Sub
我尝试了一种替代代码,它为我提供了我想要的东西,除了 1) 图表都一个一个地隐藏在同一张表中,2) 这些是图表,但不是图表表。在上面的代码中,我想将源中的范围(“B1:B8”)设置为变量单元格(如下面的代码中,带有 i 和 j),但每次尝试时,我都会收到一条错误消息,指出不支持该方法。
Sub AddCharts()
Dim i As Integer ' rows
Dim j As Integer ' columns
i = Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To 4
With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlLine
.SeriesCollection.NewSeries
With .SeriesCollection(1)
.Name = "=" & ActiveSheet.Name & "!" & Cells(1, j).Address
.XValues = "=" & ActiveSheet.Name & "!" & Range(Cells(2, 1), Cells(i, 1)).Address
.Values = "=" & ActiveSheet.Name & "!" & Range(Cells(2, j), Cells(i, j)).Address
End With
End With
Next j
End Sub
我的目标是将两个代码结合起来:
有人可以帮助我吗?
Option Explicit
Sub AddCharts()
Dim MyChart As Chart
Dim i As Integer, Dim j As Integer
Dim Sht As Worksheet
Set Sht = Sheets("Data")
i = Sht.Cells(Sht.Rows.Count, 1).End(xlUp).Row
For j = 2 To 4
Set MyChart = Charts.Add(after:=Sheets(Sheets.Count))
With MyChart
.SetSourceData Source:=Sht.Cells(2, j).Resize(i - 1, 1)
.SeriesCollection(1).XValues = Sht.Range("A2").Resize(i - 1, 1)
.Name = Sht.Cells(1, j)
End With
Next j
End Sub