ET疑难千寻千解丛书之EXCEL2010编程与实践 罗刚君 章兰新 黄朝阳 编著
疑难11 如何优化过程“隔三行求和”
某车间三人一个小组,生产表按图所示方式存放产量,利用VBA求和的代码如下。如何进行优化使其提速?
- Sub 隔三行求和()
- Dim i As Integer
- For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row '循环每一行
- '如果行号除以4等于1则产生求和公式,向前三行求和
- If i Mod 4 = 1 Then Cells(i, 3).Formula = "=sum(C" & i - 3 & ":C" & i
- - 1 & ")"
- Next
- End Sub
复制代码
è解决方案 上面程序中For...Next循环对每个行号进行余数判断,虽然可以完成需求,但并非必要。可以通过For...Next循环的Step参数来优化代码,简化循环的次数。
í操作方法
步骤1
对For...Next循环进行改进,优化后的代码如下:
- Sub 隔三行求和2()
- Dim i As Integer
- For i = 5 To Cells(Rows.Count, 1).End(xlUp).Row Step 4 '每隔三行循环一次
- '对i行3列的单元格设置求和公式,向前三行求和
- Cells(i, 3).Formula = "=sum(C" & i - 3 & ":C" & i - 1 & ")"
- Next
- End Sub
复制代码 步骤2
执行过程“隔三行求和2”,可以发现两个过程的执行结果完全一致,但工作表中数据越多,两者的速度差异就越大。
============================= 以上摘自《EXCEL2010编程与实践》
|