VBA - 如何创建多个图表表,每个系列一个

问题描述 投票:0回答:1

我是 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

我的目标是将两个代码结合起来:

  1. 创建多个图表表,而不是普通图表
  2. 循环数据系列,以便在每个图表中显示一个区域的数据

有人可以帮助我吗?

excel vba loops variables charts
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.