【问题标题】:Excel VBA for making multiple graph without using RangeExcel VBA 用于在不使用范围的情况下制作多个图形
【发布时间】:2020-10-07 00:43:19
【问题描述】:

我想要多个系列图。

我将这段代码显示为三行。

但是,它不起作用,我不能使用Range,因为我的数据源稀疏在三行("I1:I30","I51:I80","I101:I131")

With ActiveSheet.Shapes.AddChart.Chart
    .HasTitle = True
    .ChartTitle.Text = "My Graph"
    .ChartType = xlLine
    .SetSourceData Range("I1:I30","I51:I80","I101:I131") 'thats the data for three lines I want to show.
    .SeriesCollection(1).Name = "item1" 
    .SeriesCollection(1).XValues = Range("G1:G30") 

我该如何解决这个问题?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    范围设置错误。

    Range("I1:I30","I51:I80","I101:I131")
    

    范围应设置如下。

    Range("I1:I30, I51:I80, I101:I131")
    

    但是,如果 x 轴的范围是恒定的,则适合创建散点图。

    Sub test()
        Dim sourRange(1 To 3) As Range
        Dim Srs As Series
        Dim Cht As Chart
        Dim i As Integer
        
        Set sourRange(1) = Range("i1:i30")
        Set sourRange(2) = Range("i51:i80")
        Set sourRange(3) = Range("i101:i131")
        
        Set Cht = ActiveSheet.Shapes.AddChart.Chart
        With Cht
            .HasTitle = True
            .ChartTitle.Text = "My Graph"
            .ChartType = xlXYScatterLinesNoMarkers
            For Each Srs In .SeriesCollection
                Srs.Delete
            Next Srs
            For i = 1 To 3
                Set Srs = .SeriesCollection.NewSeries
                With Srs
                    .Name = "item" & i
                    .Values = sourRange(i)
                    .XValues = Range("G1:G30")
                End With
            Next i
        End With
    End Sub
    

    【讨论】:

      【解决方案2】:

      如果数据不在一个连续范围内,则需要分别添加每个系列。使用工作表不同部分的数据手动创建图表时也是如此。您不能选择不连续的范围然后插入图表。相反,只使用一个系列创建图表,然后使用其他单独的命令向图表添加更多系列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 2023-03-21
        • 1970-01-01
        • 2017-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多