excel - 根据循环索引计算的范围生成图表
问题描述
我有一个数据集,它在 4 张纸上包含 38 个变量。我想为 4 张表中的每个变量生成趋势线图。
Sub CreateChart_Ex1()
'works, proivdes a chart with: =SERIES(Spring!$A$4,Spring!$B$1:$P$1,Spring!$B$4:$P$4,1)
Set WS = Worksheets("Spring")
WS.Activate
WS.Range("A1:P1, A4:P4").Select
WS.Shapes.AddChart2(227, xlLine).Select
'why doesn't this loop work? provides a chart with =SERIES(,,Spring!$A$1:$P$1,1)
For i = 4 To 38
WS.Activate
WS.Range("A1:P1, Ai:Pi").Select
WS.Shapes.AddChart2(227, xlLine).Select
ActiveChart.ChartArea.Copy
Sheets("Graphs").Select
ActiveSheet.Pictures.Paste.Select
Sheets("Spring").Select
Next i
End Sub
for 循环不会生成包含数据的图表。看起来它在尝试计算“A1:P1,Ai:Pi”时会丢失。
我怎样才能生成所有 38 个图表?
另外,如何将图表一个接一个地粘贴,而不是一个接一个地粘贴?
解决方案
要选择“A1”下的第i行,请使用
Range("A1").Cells(i,1) ' reference [Ai]
并扩展对 P 列(第 16 列)的引用,请使用
Range("A1").Cells(i,1).Resize(1,16) 'reference [Ai:Pi]
在您的情况下i
是一个数字(整数),并且范围对象需要一个字符串值作为单元格引用。所以Ai
是无效的,你可以(但不应该)做的是与Range("A" & i)
. 更好的解决方案是从已知的单元格引用(如“A1”)开始,然后使用
VBA | 解释 |
---|---|
.Cells(i,j) |
引用表的i 第 -th 行和j -th 列 |
.Offset(i,j) |
i 按行和j 列移动引用 |
.Resize(n,m) |
展开引用以包括n 行和m 列 |
推荐阅读
- python - 多类贝叶斯分类器中的得分精度和召回率
- android - 在滚动视图中设置列表视图的最佳主意是什么?
- python-3.x - 如何将报纸库用于需要身份验证的网站?
- jquery - 向下滑动和向上滑动反向
- amazon-web-services - AWS Lambda - 使用 .NET Core 构建无服务器 API
- android - 将谷歌地图放入 AppBarLayout
- java - 如何确定一个进程是否在 Java 中正确终止
- sql - 从 SQL 比较中排除隐藏字符
- angular - 如何在部署 nginx 中强制更新 Web 应用程序
- c# - NLog LoggerFactory 中的 TypeInitializationException