EXCEL VBA 代码在运行时速度非常慢???

Sub清收清欠数据处理()'消除计算过程在窗口界面的显示Application.ScreenUpdating=(False)'声明长整数的变量DimA,B,C,D,E,F... Sub 清收清欠数据处理()
'消除计算过程在窗口界面的显示
Application.ScreenUpdating = (False)

'声明长整数的变量
Dim A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, S, T As Integer

A = Range("E1").Value
B = Range("F1").Value
C = Range("G1").Value
D = Range("H1").Value
F = Range("I1").Value
G = Range("J1").Value
For I = 7 To 7 + A - 1
For J = 7 + A + 1 To 7 + B + A
For K = 7 + A + 2 + B To 7 + B + A + C + 1 Step 3
For L = 7 + A + 2 + B + 1 To 7 + B + A + C + 2 Step 3

Select Case Range("D1")
Case "1月份":

'(1)应收客户合同工程款年初余额----------------------------------------------------!!!!!(使用for多重循环需要在数据库第500行,成果表之间进行数据适配)

'对调入项目在数据库中进行数据匹配
Sheets("成果表").Cells(7, I) = Application. _
IfError(Application.VLookup(Sheets("成果表").Cells(3, I), Sheets("1月").Range("A5:B500"), 2, 0) / 10000, 0)

'对直管工区在数据库中进行数据匹配

Sheets("成果表").Cells(7, J) = Application. _
IfError(Application.VLookup(Sheets("成果表").Cells(3, J), Sheets("1月").Range("A5:B500"), 2, 0) / 10000, 0)

'对托管项目(处)在数据库中进行数据匹配

Sheets("成果表").Cells(7, K) = Application. _
IfError(Application.VLookup(Sheets("成果表").Cells(4, K), Sheets("1月").Range("A5:B500"), 2, 0) / 10000, 0)

'对托管项目(局)在数据库中进行数据匹配

Sheets("成果表").Cells(7, L) = Application. _
IfError(Application.VLookup(Sheets("成果表").Cells(4, L), Sheets("1月").Range("AA5:AB500"), 2, 0) / 10000, 0)
Next L
Next K
Next J
Next I

End Select

End Sub

'
展开
 我来答
阳光上的桥
2018-02-03 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65819
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
因为你大量使用VLOOKUP去查数据导致了速度慢,应该把VLOOKUP查找的内容建立一个字典存在内存里面,以后成千上万次检测某数据是否在里面的时候,可以瞬间获得查询结果。
另外,你这样的程序会写得长,因为你CASE每个月份都要写一段代码,一般的做法是把各月份的数据都存放在一个字典里面。
此外,逐一单元格填写影响速度,可以使用数组统一获取内容、更新后填回去,这样可以进一步减少一些时间。
如果需要代劳修改代码,请【百度云盘】(一个使用百度账户登录的可以对话和传送文件的应用)加友私下传文件,直接在文件上修改。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式