Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3589|回复: 9

[VBA] 011-优化“隔三行求和”-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-1-18 11:40 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难11  如何优化过程“隔三行求和”
某车间三人一个小组,生产表按图所示方式存放产量,利用VBA求和的代码如下。如何进行优化使其提速?


  1. Sub 隔三行求和()
  2.   Dim i As Integer
  3.   For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row  '循环每一行
  4.     '如果行号除以4等于1则产生求和公式,向前三行求和
  5.     If i Mod 4 = 1 Then Cells(i, 3).Formula = "=sum(C" & i - 3 & ":C" & i
  6.     - 1 & ")"
  7.   Next
  8. End Sub
复制代码

è解决方案
上面程序中For...Next循环对每个行号进行余数判断,虽然可以完成需求,但并非必要。可以通过For...Next循环的Step参数来优化代码,简化循环的次数。
í操作方法
步骤1        
对For...Next循环进行改进,优化后的代码如下:

  1. Sub 隔三行求和2()
  2.   Dim i As Integer
  3.   For i = 5 To Cells(Rows.Count, 1).End(xlUp).Row Step 4  '每隔三行循环一次
  4.     '对i行3列的单元格设置求和公式,向前三行求和
  5.     Cells(i, 3).Formula = "=sum(C" & i - 3 & ":C" & i - 1 & ")"
  6.   Next
  7. End Sub
复制代码
步骤2        
执行过程“隔三行求和2”,可以发现两个过程的执行结果完全一致,但工作表中数据越多,两者的速度差异就越大。

=============================
上摘自《EXCEL2010编程与实践》


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2011-1-18 11:41 | 显示全部楼层
妖言:

我来砸个场:这个用技巧法最快
回复

使用道具 举报

发表于 2011-1-18 11:54 | 显示全部楼层
回复

使用道具 举报

发表于 2011-1-18 12:14 | 显示全部楼层
应该是定位-空-ALT=吧?
回复

使用道具 举报

发表于 2011-1-18 12:15 | 显示全部楼层
妖妖把你的技巧贴出来呵。。学习一下。{:101:}
回复

使用道具 举报

发表于 2011-1-18 13:15 | 显示全部楼层
{:912:}{:912:}
回复

使用道具 举报

发表于 2011-2-17 09:03 | 显示全部楼层
来看技巧操作的
回复

使用道具 举报

发表于 2011-4-9 21:04 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

发表于 2011-8-28 18:11 | 显示全部楼层
呵呵  高手如云啊      
回复

使用道具 举报

发表于 2011-8-28 13:02 | 显示全部楼层
学习了,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 19:43 , Processed in 0.672063 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表