我希望循环遍历单元格并为图形构建范围。我的主要问题是我无法弄清楚如何整合“我”。进入范围。例如:
Dim name As String
Dim newChart as Chart
Dim i as Integer
Set newChart = Charts.add
For i = 1 To 20
accName = Range("C" & i).Value 'I understand why this works.
With newChart
.ChartType = xlColumnClustered
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = accName
.SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E&i:G&i, I&i:K&i, M&i:O&i, Q&i:S&i") 'How can I get this to work?
.SeriesCollection(1).XValues = wb.Worksheets("Summary-Account").Range("E3:G3, I3:K3, M3:O3, Q3:S3")
End With
i = i + 1
Loop
答案 0 :(得分:3)
您不手动递增i
函数for loop
已经为您完成了。
所以删除 i = i + 1
。
现在,为了使Range
工作,你需要它的“”是这样的:Range("E" & i & ":G" & i
)。我不太了解您尝试从6个不同的列中获取数据时想要实现的目标。有关详细信息,请参阅range。
答案 1 :(得分:2)
您可能需要:
.SeriesCollection(1).Values = wb.Worksheets("Summary-Account").Range("E" & i & ":G" & i & ", I" & i & ":K" & i & ", M" & i & ":O" & i & ", Q" & i & ":S" & i)
不是最清晰的线,但应该给你模式。还有其他问题,比如需要一个“Next i”而不是“Loop”而没有i = i + 1,但是在我的电脑上,这给了我一个包含多个系列的图表。
答案 2 :(得分:0)
使用Next i
代替Loop
;并摆脱i = i+1
。
另外,请使用"E" & i & ":G" & i
代替"E&i:G&i"
进一步,在vba
Dim i as double
For i = 1 to 100 Step 10 '<= Step 10 means when updating i, i = i + 10, and default value would be 1
Loop '<=breaks here, compile error is expected.
这在语法中甚至无效,关键字Loop
与另一个关键字Do
相关联,For
与Next
答案 3 :(得分:0)
尝试
.SeriesCollection(1).Values = Range("E1").Resize(20,1).Value
这会将所有值复制到数组中以用于系列集合