2014-12-12 2 views
0

Я ОЧЕНЬ новичок в VBA. Я пытаюсь написать код, который выведет 33 серии. Значения x для первой серии находятся в столбце A, а y-значения для первой серии находятся в столбце C. Тогда D и F. Тогда G и I .... и т. Д. (Таким образом, в основном значения x и y-значения представляют собой каждый третий столбец, начинающийся с A и C соответственно). Значения в строках 2 до 25.Scatter plot code выводит слишком много серий Excel VBA

также название для каждой серии в первом ряду, каждый третий столбец, начиная с 2.

Первые 33 точек данных выходят в порядке, но он по-прежнему на создать связку на непредвиденных точках данных. Есть ли проблема с моей петлей? Как я уже сказал, я довольно новый, так что это может быть что-то сверх очевидное. Благодаря!

Вот мой код:

Sub Scatter 

Dim i As Int 

Dim name As String 


    ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.ChartType = xlXYScatterLinesNoMarkers 

For i = 1 To 33 

    name = Cells(1, 3 * i - 1) 

    ActiveChart.SeriesCollection.NewSeries 
    ActiveChart.SeriesCollection(i).name = name 

    With Worksheets("Sheet1") 

    ActiveSheet.SeriesCollection(i).XValues = .range(.Cells(2, 3 * i - 2), .Cells(25, 3 * i - 2)) 
    ActiveSheet.SeriesCollection(i).Values = .range(.Cells(2, 3 * i), .Cells(25, 3 * i)) 

    End With 


Next i 


End Sub 

ответ

0
Sub Scatter() 

Dim i As Integer 
Dim cht As Chart, sht As Worksheet 

    Set sht = ActiveSheet 
    Set cht = sht.Shapes.AddChart().Chart 
    cht.ChartType = xlXYScatterLinesNoMarkers 

    For i = 1 To 33 
     With cht.SeriesCollection.NewSeries() 
      .Name = sht.Cells(1, (3 * i) - 1) 
      .XValues = sht.Range(sht.Cells(2, (3 * i) - 2), sht.Cells(25, (3 * i) - 2)) 
      .Values = sht.Range(sht.Cells(2, 3 * i), sht.Cells(25, 3 * i)) 
     End With 
    Next i 

End Sub