Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel宏创建折线图,不包括中间的列_Excel_Charts_Vba - Fatal编程技术网

Excel宏创建折线图,不包括中间的列

Excel宏创建折线图,不包括中间的列,excel,charts,vba,Excel,Charts,Vba,我想在excel宏中创建折线图。我在excel中有下表 第一个折线图包含单元格A和B的值范围。第二个折线图包含单元格A和C的值范围。第三个折线图包含单元格A和D的值范围 ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("A1:D3") ActiveChart.ApplyDataLabels ActiveChart.ChartType = xlLine 上述代码仅为A1到D4范围生成一个折线图

我想在excel宏中创建折线图。我在excel中有下表

第一个折线图包含单元格A和B的值范围。第二个折线图包含单元格A和C的值范围。第三个折线图包含单元格A和D的值范围

ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("A1:D3")
ActiveChart.ApplyDataLabels
ActiveChart.ChartType = xlLine

上述代码仅为A1到D4范围生成一个折线图。

这是一个很好的问题,宏记录器可以提供如何回答的提示。您只需要定义另一个系列集合。下面是宏记录器不经修改生成的内容

Sub Macro1()
    Range("A1:D2").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "=Sheet1!$A$3"
    ActiveChart.SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
End Sub


下面是我在不使用select的情况下的实现方法

Sub createChart()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = "=Sheet1!$A$3"
        .SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
    End With
End Sub

循环

Sub createChartWithLoop()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range(wks.Range("A" & chartRange.Row & ":D" & chartRange.Row).Address)

        For i = chartRange.Row + 1 To chartRange.Rows.Count
            .SeriesCollection.NewSeries
            .SeriesCollection(i).Name = wks.Cells(i, 1)
            .SeriesCollection(i).Values = wks.Range("B" & i & ":D" & i)
        Next i
    End With
End Sub


编辑-从数据的每一行创建不同的图表

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    For i = chartRange.Row To chartRange.Rows.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Range("A" & i & ":D" & i).Address)
            .Parent.Left = 20 + i * 50
            .Parent.Top = 40 + i * 50
        End With
    Next i
End Sub
结果:


为数据的每个列创建不同的图表,列A为标签:

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:D4")

    For col = chartRange.Column + 1 To chartRange.Columns.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Cells(1, 1).Address)
            .SetSourceData Source:=wks.Range("A1:A4," & Range(Cells(chartRange.Row, col), Cells(chartRange.Rows.Count, col)).Address)
            .Parent.Left = col * 30
            .Parent.Top = col * 30
        End With
    Next col
End Sub

这是一个很好的问题,宏记录器可以提供如何回答的提示。您只需要定义另一个系列集合。下面是宏记录器不经修改生成的内容

Sub Macro1()
    Range("A1:D2").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "=Sheet1!$A$3"
    ActiveChart.SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
End Sub


下面是我在不使用select的情况下的实现方法

Sub createChart()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = "=Sheet1!$A$3"
        .SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
    End With
End Sub

循环

Sub createChartWithLoop()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range(wks.Range("A" & chartRange.Row & ":D" & chartRange.Row).Address)

        For i = chartRange.Row + 1 To chartRange.Rows.Count
            .SeriesCollection.NewSeries
            .SeriesCollection(i).Name = wks.Cells(i, 1)
            .SeriesCollection(i).Values = wks.Range("B" & i & ":D" & i)
        Next i
    End With
End Sub


编辑-从数据的每一行创建不同的图表

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    For i = chartRange.Row To chartRange.Rows.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Range("A" & i & ":D" & i).Address)
            .Parent.Left = 20 + i * 50
            .Parent.Top = 40 + i * 50
        End With
    Next i
End Sub
结果:


为数据的每个列创建不同的图表,列A为标签:

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:D4")

    For col = chartRange.Column + 1 To chartRange.Columns.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Cells(1, 1).Address)
            .SetSourceData Source:=wks.Range("A1:A4," & Range(Cells(chartRange.Row, col), Cells(chartRange.Rows.Count, col)).Address)
            .Parent.Left = col * 30
            .Parent.Top = col * 30
        End With
    Next col
End Sub

这是一个很好的问题,宏记录器可以提供如何回答的提示。您只需要定义另一个系列集合。下面是宏记录器不经修改生成的内容

Sub Macro1()
    Range("A1:D2").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "=Sheet1!$A$3"
    ActiveChart.SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
End Sub


下面是我在不使用select的情况下的实现方法

Sub createChart()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = "=Sheet1!$A$3"
        .SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
    End With
End Sub

循环

Sub createChartWithLoop()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range(wks.Range("A" & chartRange.Row & ":D" & chartRange.Row).Address)

        For i = chartRange.Row + 1 To chartRange.Rows.Count
            .SeriesCollection.NewSeries
            .SeriesCollection(i).Name = wks.Cells(i, 1)
            .SeriesCollection(i).Values = wks.Range("B" & i & ":D" & i)
        Next i
    End With
End Sub


编辑-从数据的每一行创建不同的图表

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    For i = chartRange.Row To chartRange.Rows.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Range("A" & i & ":D" & i).Address)
            .Parent.Left = 20 + i * 50
            .Parent.Top = 40 + i * 50
        End With
    Next i
End Sub
结果:


为数据的每个列创建不同的图表,列A为标签:

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:D4")

    For col = chartRange.Column + 1 To chartRange.Columns.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Cells(1, 1).Address)
            .SetSourceData Source:=wks.Range("A1:A4," & Range(Cells(chartRange.Row, col), Cells(chartRange.Rows.Count, col)).Address)
            .Parent.Left = col * 30
            .Parent.Top = col * 30
        End With
    Next col
End Sub

这是一个很好的问题,宏记录器可以提供如何回答的提示。您只需要定义另一个系列集合。下面是宏记录器不经修改生成的内容

Sub Macro1()
    Range("A1:D2").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "=Sheet1!$A$3"
    ActiveChart.SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
End Sub


下面是我在不使用select的情况下的实现方法

Sub createChart()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range("Sheet1!$A$1:$D$2")
        .SeriesCollection.NewSeries
        .SeriesCollection(2).Name = "=Sheet1!$A$3"
        .SeriesCollection(2).Values = "=Sheet1!$B$3:$D$3"
    End With
End Sub

循环

Sub createChartWithLoop()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chrt As Chart
    Set chrt = wks.Shapes.AddChart.Chart

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    With chrt
        .ChartType = xlLine
        .SetSourceData Source:=Range(wks.Range("A" & chartRange.Row & ":D" & chartRange.Row).Address)

        For i = chartRange.Row + 1 To chartRange.Rows.Count
            .SeriesCollection.NewSeries
            .SeriesCollection(i).Name = wks.Cells(i, 1)
            .SeriesCollection(i).Values = wks.Range("B" & i & ":D" & i)
        Next i
    End With
End Sub


编辑-从数据的每一行创建不同的图表

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:A4")

    For i = chartRange.Row To chartRange.Rows.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Range("A" & i & ":D" & i).Address)
            .Parent.Left = 20 + i * 50
            .Parent.Top = 40 + i * 50
        End With
    Next i
End Sub
结果:


为数据的每个列创建不同的图表,列A为标签:

Sub createDifferentCharts()
    Dim wks As Worksheet
    Set wks = Worksheets("Sheet1")

    Dim chartRange As Range
    Set chartRange = wks.Range("A1:D4")

    For col = chartRange.Column + 1 To chartRange.Columns.Count
        With wks.Shapes.AddChart.Chart
            .ChartType = xlLine
            .SetSourceData Source:=Range(wks.Cells(1, 1).Address)
            .SetSourceData Source:=wks.Range("A1:A4," & Range(Cells(chartRange.Row, col), Cells(chartRange.Rows.Count, col)).Address)
            .Parent.Left = col * 30
            .Parent.Top = col * 30
        End With
    Next col
End Sub

我想生成3个不同的图形。图1-X轴单元格A1:A4,Y轴单元格C1:C4。图2-X轴单元格A1:A4,Y轴单元格B1:B4。图3-X轴单元格A1:A4,Y轴单元格D1:D4。好的,请参见我的编辑。最后一个代码块将使用列A作为轴标签为每列数据创建不同的折线图。这就是你想要的吗?上面的代码很好用。然而,有时我会收到自动化错误未指定的错误-2147467259。如果我调试函数,我不会收到上述错误。然而,我收到上述错误,只有当我按下F5(直接运行),我想生成3个不同的图形。图1-X轴单元格A1:A4,Y轴单元格C1:C4。图2-X轴单元格A1:A4,Y轴单元格B1:B4。图3-X轴单元格A1:A4,Y轴单元格D1:D4。好的,请参见我的编辑。最后一个代码块将使用列A作为轴标签为每列数据创建不同的折线图。这就是你想要的吗?上面的代码很好用。然而,有时我会收到自动化错误未指定的错误-2147467259。如果我调试函数,我不会收到上述错误。然而,我收到上述错误,只有当我按下F5(直接运行),我想生成3个不同的图形。图1-X轴单元格A1:A4,Y轴单元格C1:C4。图2-X轴单元格A1:A4,Y轴单元格B1:B4。图3-X轴单元格A1:A4,Y轴单元格D1:D4。好的,请参见我的编辑。最后一个代码块将使用列A作为轴标签为每列数据创建不同的折线图。这就是你想要的吗?上面的代码很好用。然而,有时我会收到自动化错误未指定的错误-2147467259。如果我调试函数,我不会收到上述错误。然而,我收到上述错误,只有当我按下F5(直接运行),我想生成3个不同的图形。图1-X轴单元格A1:A4,Y轴单元格C1:C4。图2-X轴单元格A1:A4,Y轴单元格B1:B4。图3-X轴单元格A1:A4,Y轴单元格D1:D4。好的,请参见我的编辑。最后一个代码块将使用列A作为轴标签为每列数据创建不同的折线图。这就是你想要的吗?上面的代码很好用。然而,有时我会收到自动化错误未指定的错误-2147467259。如果我调试函数,我不会收到上述错误。但是,只有当我按F5(直接运行)时,我才会收到上述错误