Excel 从xy绘图VBA中删除空数据系列
我有一个vba代码,它根据数据行的总数逐行添加一系列数据。基于一列数据中的最小值,将创建两个图表。我的vba技能非常基本 当我运行代码时,生成了图,但是第一个图添加了许多空的数据序列。我不确定这是为什么,我想在生产后删除它们,或者首先停止添加它们Excel 从xy绘图VBA中删除空数据系列,excel,vba,series,Excel,Vba,Series,我有一个vba代码,它根据数据行的总数逐行添加一系列数据。基于一列数据中的最小值,将创建两个图表。我的vba技能非常基本 当我运行代码时,生成了图,但是第一个图添加了许多空的数据序列。我不确定这是为什么,我想在生产后删除它们,或者首先停止添加它们 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 Ran
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
子按钮6\u单击()
Dim xrng As范围
Dim yrng As系列
Dim x2rng As范围
变暗y2rng As范围
作为整数的Dim i
变暗Rng As范围
作为整数的Dim l
将k变为整数
作为整数的Dim i2
作为整数的Dim c
作为整数的Dim j
工作表(“模板”)。激活
将lv变暗为字符串
lv=工作表(“模板”).Range(工作表(“模板”).Range(B11”)、工作表(“模板”).Range(B11”).End(xlDown)).Find(工作表函数.Small(工作表(“模板”).Range(工作表(“模板”).Range(B11”)、工作表(“模板”).Range(B11”).End(xlDown))、1)、1)地址
范围(lv)。选择
l=ActiveCell.Row
k=工作表(“模板”).Range(工作表(“模板”).Range(B11)、工作表(“模板”).Range(B11”).End(xlDown)).Rows.Count
c=l-10
i=1
i2=1
j=1
设置xrng=工作表(“模板”)。范围(“C11:CP11”)
设置yrng=工作表(“模板”)。范围(“C201:CP201”)
设置x2rng=xrng.Offset(1,0)
设置y2rng=yrng.偏移量(1,0)
像图表一样黯淡
设置向下滑动=图表。添加
痛哭
DownSweep.ChartType=xlxyStrict
DownSweep.SeriesCollection.NewSeries
DownSweep.SeriesCollection(1).XValues=xrng
DownSweep.SeriesCollection(1).值=yrng
以
i=i+1
迭代:
如果我
任何帮助都将不胜感激
Judoo未经测试,但这应该更容易使用:
Sub Button6_Click()
Dim xrng As Range, yrng As Range
Dim i As Long
Dim rng As Range
Dim l As Long
Dim k As Long
Dim i2 As Long
Dim c As Long
Dim j As Long
Dim DownSweep As Chart, UpSweep As Chart, cht As Chart
Dim ws As Worksheet, smallest
Set ws = Worksheets("Template") '<< use variables for worksheets!
Set rng = ws.Range(ws.Range("B11"), ws.Range("B11").End(xlDown))
smallest = WorksheetFunction.Small(rng, 1)
l = rng.Find(what:=smallest, LookIn:=xlValues, lookat:=xlWhole).Row
k = rng.Rows.Count
c = l - 10
Set xrng = ws.Range("C11:CP11")
Set yrng = ws.Range("C201:CP201")
Set DownSweep = Charts.Add
DownSweep.ChartType = xlXYScatter
Set UpSweep = Charts.Add
UpSweep.ChartType = xlXYScatter
For i = 1 To k
Set cht = IIf(i <= c, DownSweep, UpSweep) 'which chart to add to ?
With cht.SeriesCollection.NewSeries()
.XValues = xrng.Offset(i - 1, 0).Value
.Values = yrng.Offset(i - 1, 0).Value
End With
Next i
End Sub
与
If i <= c Then
Set cht = DownSweep
Else
Set cht = UpSweep
End If
如果我难以置信!非常感谢你。最后的For循环,我不完全理解。什么是“IIF”?请看我上面的编辑,它只是决定将系列添加到哪个图表中。
If i <= c Then
Set cht = DownSweep
Else
Set cht = UpSweep
End If