Excelmacros创build线图,不包括列之间的列

我想在Excelmacros中创build折线图。 我在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的折线图。

这是一个很好的问题,macroslogging器可以提供一个很好的提示如何回答。 你只需要定义另一个系列集合。 这里是macroslogging器不经修改而生产的。

 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 

在这里输入图像说明


编辑 – 从每一数据创build不同的图表

 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 

结果:

在这里输入图像说明


为每数据创build不同的图表,列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 

在这里输入图像说明