Excel精英培训网

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

[已解决]提高VBA循环语句的运行速度?

[复制链接]
发表于 2011-11-22 10:10 | 显示全部楼层 |阅读模式
Dim A, B, C As Integer
B = 14
For C = 1 To 60
For A = 1 To 100000
If Sheets("②Count Table").Cells(A + 4, 4) <> "" Then

Sheets("②Count Table").Cells(A + 4, B) = Sheets("②Count Table").Cells(A + 4, B - 1) '将DB计数的值赋予到现场计数
Sheets("②Count Table").Cells(A + 4, B) = Sheets("②Count Table").Cells(A + 4, B - 1) _
                                             + Sheets("②Count Table").Cells(A + 4, B + 1) - Sheets("②Count Table").Cells(A + 4, B + 3) End If
Next A
B = B + 5
Next C '现场计数=DB计数+采集遗漏-采集多余 A循环行 B循环列

这段代码在excel2007中运行速度非常慢,请朋友帮忙改下吧,达到同样效果就行。
最佳答案
2011-11-22 10:42
本帖最后由 mxg825 于 2011-11-22 11:17 编辑
  1. Sub MXG825()
  2. Dim A, B, C As Integer
  3. B = 14
  4. ARR = Sheets("②Count Table").UsedRange
  5. For C = 1 To 60
  6. For A = 5 To UBound(ARR)
  7. If ARR(A, 4) <> "" Then
  8.    ARR(A, B) = ARR(A, B - 1)  '将DB计数的值赋予到现场计数
  9.    ARR(A, B) = ARR(A, B - 1) + ARR(A, B + 1) - ARR(A, B + 3)
  10. End If
  11. Next A
  12. B = B + 5
  13. Next C '现场计数=DB计数+采集遗漏-采集多余 A循环行 B循环列
  14. Sheets("②Count Table").Cells.ClearContents '清空工作表数据
  15. Sheets("②Count Table").Range("A1").Resize(UBound(ARR), UBound(ARR, 2)) = ARR '把数组导入到工作表
  16. End Sub
复制代码
发表于 2011-11-22 10:18 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-11-22 10:25 | 显示全部楼层
如何换数组呢?麻烦朋友指点下?
回复

使用道具 举报

发表于 2011-11-22 10:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 mxg825 于 2011-11-22 11:17 编辑
  1. Sub MXG825()
  2. Dim A, B, C As Integer
  3. B = 14
  4. ARR = Sheets("②Count Table").UsedRange
  5. For C = 1 To 60
  6. For A = 5 To UBound(ARR)
  7. If ARR(A, 4) <> "" Then
  8.    ARR(A, B) = ARR(A, B - 1)  '将DB计数的值赋予到现场计数
  9.    ARR(A, B) = ARR(A, B - 1) + ARR(A, B + 1) - ARR(A, B + 3)
  10. End If
  11. Next A
  12. B = B + 5
  13. Next C '现场计数=DB计数+采集遗漏-采集多余 A循环行 B循环列
  14. Sheets("②Count Table").Cells.ClearContents '清空工作表数据
  15. Sheets("②Count Table").Range("A1").Resize(UBound(ARR), UBound(ARR, 2)) = ARR '把数组导入到工作表
  16. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-11-22 11:14 | 显示全部楼层
非常感谢4楼的朋友,能告诉我们第14行代码的含义吗?谢谢了
回复

使用道具 举报

发表于 2011-11-22 11:15 | 显示全部楼层
崇拜杨利伟 发表于 2011-11-22 11:14
非常感谢4楼的朋友,能告诉我们第14行代码的含义吗?谢谢了

把数组 导到工作表!
回复

使用道具 举报

 楼主| 发表于 2011-11-22 13:12 | 显示全部楼层
谢谢朋友了。

第13行代码一定要用吗?不用是不是会快写呢?
回复

使用道具 举报

 楼主| 发表于 2011-11-22 13:13 | 显示全部楼层

谢谢朋友了。

第14行代码一定要用吗?不用是不是会快写呢?上面写错了不是13行。

点评

清空 再导入数组,速度会快一点!  发表于 2011-11-23 00:39
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 19:26 , Processed in 0.316431 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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