У меня есть код VBA, который добавляет серии данных строка за строкой на основе общего количества строк данных. На основе минимального значения в одном столбце данных создаются две диаграммы. Мои навыки в vba очень просты c.
Когда я запускаю код, создаются графики, но к первому графику добавляется много пустых серий данных. Я не уверен, почему это так, и хочу либо удалить их после производства, либо вообще прекратить их добавление.
Sub Button6_Click()
Dim xrng As Range
Dim yrng As Range
Dim x2rng As Range
Dim y2rng As Range
Dim i As Integer
Dim Rng As Range
Dim l As Integer
Dim k As Integer
Dim i2 As Integer
Dim c As Integer
Dim j As Integer
Worksheets("Template").Activate
Dim lv As String
lv = Worksheets("Template").Range(Worksheets("Template").Range("B11"), Worksheets("Template").Range("B11").End(xlDown)).Find(WorksheetFunction.Small(Worksheets("Template").Range(Worksheets("Template").Range("B11"), Worksheets("Template").Range("B11").End(xlDown)), 1), , , 1).Address
Range(lv).Select
l = ActiveCell.Row
k = Worksheets("Template").Range(Worksheets("Template").Range("B11"), Worksheets("Template").Range("B11").End(xlDown)).Rows.Count
c = l - 10
i = 1
i2 = 1
j = 1
Set xrng = Worksheets("Template").Range("C11:CP11")
Set yrng = Worksheets("Template").Range("C201:CP201")
Set x2rng = xrng.Offset(1, 0)
Set y2rng = yrng.Offset(1, 0)
Dim DownSweep As Chart
Set DownSweep = Charts.Add
With DownSweep
DownSweep.ChartType = xlXYScatter
DownSweep.SeriesCollection.NewSeries
DownSweep.SeriesCollection(1).XValues = xrng
DownSweep.SeriesCollection(1).Values = yrng
End With
i = i + 1
ITERATE:
If i < c Then
DownSweep.SeriesCollection.NewSeries
DownSweep.SeriesCollection(i).XValues = x2rng
DownSweep.SeriesCollection(i).Values = y2rng
Set x2rng = x2rng.Offset(1, 0)
Set y2rng = y2rng.Offset(1, 0)
i = i + 1
GoTo ITERATE
Else
End If
If i < k Then
Dim UpSweep As Chart
Set UpSweep = Charts.Add
With UpSweep
UpSweep.ChartType = xlXYScatter
UpSweep.SeriesCollection.NewSeries
UpSweep.SeriesCollection(1).XValues = x2rng
UpSweep.SeriesCollection(1).Values = y2rng
End With
End If
i = i + 1
i2 = i2 + 1
ITERATE2:
If i < k Then
UpSweep.SeriesCollection.NewSeries
UpSweep.SeriesCollection(i2).XValues = x2rng
UpSweep.SeriesCollection(i2).Values = y2rng
Set x2rng = x2rng.Offset(1, 0)
Set y2rng = y2rng.Offset(1, 0)
i = i + 1
i2 = i2 + 1
GoTo ITERATE2
Else
End If
End Sub
Буду признателен за любую помощь,
Дзюдо