在excel中使用vba绘制43 xy散点图

在excel中使用vba绘制43 xy散点图,vba,draw,Vba,Draw,我需要在excel中使用VBA绘制43个x/y散点图我为一个图形开发了此代码,我不确定如何将其应用于绘制剩余的42个图形我的意思是我不想手动更改数据范围我需要将其放入for循环或类似的东西中。这是我的密码 Sub draw() ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select ActiveChart.SeriesCollection.NewSeries ActiveChart.Ful

我需要在excel中使用VBA绘制43个x/y散点图我为一个图形开发了此代码,我不确定如何将其应用于绘制剩余的42个图形我的意思是我不想手动更改数据范围我需要将其放入for循环或类似的东西中。这是我的密码

Sub draw()

    ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(1).Name = "=""HBES"""
    ActiveChart.FullSeriesCollection(1).XValues = "=EN!$G$253:$G$278"
    ActiveChart.FullSeriesCollection(1).Values = "=EN!$H$253:$h$278"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(2).Name = "=""NHBES"""
    ActiveChart.FullSeriesCollection(2).XValues = "=EN!$G$253:$G$278"
    ActiveChart.FullSeriesCollection(2).Values = "='EN1'!$g$253:$g$278"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(3).Name = "=""NHBCS"""
    ActiveChart.FullSeriesCollection(3).XValues = "=EN!$G$253:$G$278"
    ActiveChart.FullSeriesCollection(3).Values = "=EN1c!$g$253:$g$278"
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(4).Name = "=""HBCS"""
    ActiveChart.FullSeriesCollection(4).XValues = "=EN!$G$253:$G$278"
    ActiveChart.FullSeriesCollection(4).Values = "=ENC!$h$253:$h$278"
    With ActiveChart
     'chart name
    .HasTitle = True
    .ChartTitle.Characters.Text = "Expected Number of Blockages for Pipes Group Two in Condition State One"
     'X axis name
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (Years)"
     'y-axis name
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Expected Number of Blockages"
End With
End Sub
请注意,数据是按列排列的,因此对于下一张图纸,我应该将这一行从

ActiveChart.FullSeriesCollection(1).Values = "=EN!$H$253:$H$278"
将来

ActiveChart.FullSeriesCollection(1).Values=“=EN!$I$253:$I$278”

剩下的三个系列也是一样的,x范围对于所有绘制的图形都是恒定的

ActiveChart.FullSeriesCollection(3).XValues = "=EN!$G$253:$G$278"
我希望这是清楚的


提前谢谢

为什么没有人回答?来吧,伙计们,我不认为这是不可能做到的。请帮我写一个包含列的数组,然后在代码中循环数组的长度。修改代码只需要以下内容:“=En!$”&ColArr(i)和“$253:$”&ColArr(i)和“$278”。colArr=Arr(“A”、“B”、“C”、“D”…),我建议您也这样做:Coll1=ActiveChart.FullSeriesCollection(1),Coll2=ActiveChart.FullSeriesCollection(2)等等。少一点打字;)