Sub 分析()
rq = 2 '变量声明,表16起始基础变量
rw = 5 '变量声明,表2起始的基础变量
re = 0 '变量声明,给否定的基础变量
rt = 4 '变量声明,基数参照变量
Do Until Sheet16.Cells(rq, 3) = "" '开始进入循环判断,执行到空单元格跳出。
rq = rq + 1
rw = rw + 1
re = re + 1
rt = rt + 1
a = Sheet16.Cells(rq, 3) '获取表16(rq&3)单元格的值
pp = Cells(rt, 3) '获取表当前表(rq&3)单元格的值
oo = re
If a <> 1 And a <> pp Then '用于判断两个结果
Cells(rw, 3) = oo '如果表16中A3单元的值不等于表2中c5单元格的值并不能为1在表二A6单元格写入1
Else
Cells(rw, 3) = "●" '如果表16中A3单元的值不等于表2中c5单元格的值在表二A6单元格写入●
re = re - re '出现●符号后,否定变量RE重置为0
End If
Loop
End Sub
为什么说这代码慢,原因如下
本来使用=IF(data!B4="","",IF(COUNTIF(data!$C4:data!$H4,D$5),"●",IF(D6<>"●",D6+1,1)))
引用的DATA!就是表16,这表随时整页涮新,这种IF语句在5万多个单元格内使用。打开工作表后不不用等待,刷新也即刻完成!
以上VBA本人初学自写,能达到最终结果,但运算太慢,要等待1分钟才能操作,DATA!工作表每天加入数据。
求高人指点!
求高手简化我这初学的的VBA代码。现在计算1550行1列的数据要1分钟才完成
答案:3 悬赏:0
解决时间 2021-02-02 10:56
- 提问者网友:控制庸俗
- 2021-02-01 18:34
最佳答案
- 二级知识专家网友:我的任性你不懂
- 2021-02-01 19:08
计算慢的原因是:
你的Excel中存在的大量的公式,而你每次使用VBA语句像表中写入数据时Excel会自动重新计算公式的值,计算完毕后又会刷新屏幕。虽然Excel的公式计算速度很快,但刷新屏幕也会耗时,你写入1000个数据就等于Excel中的公式重新计算1000次+刷新1000次屏幕。速度自然慢了。
解决方法(基于Excel2007或以上版本),代码更改如下:
Sub 分析()
'这里你的dim语句(变量声明)
Application.Calculation = xlCalculationManual 'Excel计算模式为当用户请求时才计算
Application.ScreenUpdating = False 'Excel不刷新屏幕
'这里你的其他代码
Application.Calculation = xlCalculationAutomatic 'Excel计算模式恢复为自动计算
Application.ScreenUpdating = True 'Excel执行屏幕刷新
End Sub如果是Excel2003版,由于不支持Application.Calculation属性(我只是从帮助文件看到,没有亲自验证,个人觉得应该有等同的方法),可以在Excel工具→选项里将计算模式改为手动,代码执行完后按F9或者再把计算模式改回来。
你的Excel中存在的大量的公式,而你每次使用VBA语句像表中写入数据时Excel会自动重新计算公式的值,计算完毕后又会刷新屏幕。虽然Excel的公式计算速度很快,但刷新屏幕也会耗时,你写入1000个数据就等于Excel中的公式重新计算1000次+刷新1000次屏幕。速度自然慢了。
解决方法(基于Excel2007或以上版本),代码更改如下:
Sub 分析()
'这里你的dim语句(变量声明)
Application.Calculation = xlCalculationManual 'Excel计算模式为当用户请求时才计算
Application.ScreenUpdating = False 'Excel不刷新屏幕
'这里你的其他代码
Application.Calculation = xlCalculationAutomatic 'Excel计算模式恢复为自动计算
Application.ScreenUpdating = True 'Excel执行屏幕刷新
End Sub如果是Excel2003版,由于不支持Application.Calculation属性(我只是从帮助文件看到,没有亲自验证,个人觉得应该有等同的方法),可以在Excel工具→选项里将计算模式改为手动,代码执行完后按F9或者再把计算模式改回来。
全部回答
- 1楼网友:瘾与深巷
- 2021-02-01 21:27
把表与代码发我邮箱,举例说清楚目的与要求![email protected]
- 2楼网友:如果这是命
- 2021-02-01 20:34
宏的运行速度比函数慢,但是提供了更多的功能,所以慢一些是肯定的。
不刷屏可以提速。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯