永发信息网

vb操作excel用到循环很大,处理慢,怎样处理?

答案:2  悬赏:60  手机版
解决时间 2021-02-20 13:39
  • 提问者网友:末路
  • 2021-02-19 17:56
Dim i%, j%, b$, c$

For i = 2 To 356 Step 1
For j = 2 To 14630 Step 1

b = xlsheet3.Cells(j, 18) & xlsheet3.Cells(j, 19) & xlsheet3.Cells(j, 20)
c = xlsheet3.Cells(j, 23) & xlsheet3.Cells(j, 24) & xlsheet3.Cells(j, 25)
If (xlsheet3.Cells(i, 32) = b) Then
xlsheet3.Cells(j, 15) = xlsheet3.Cells(i, 34)
End If
If (xlsheet3.Cells(i, 32) = c) Then
xlsheet3.Cells(j, 14) = xlsheet3.Cells(i, 34)
End If
Next j
Next i
大家看下,这样操作下来,运行时间太长拉,好几个小时,请各位高人指教!!
我后来把excel转成access,但写代码又不会,书上都是些查询的.我无参考例子,请指教,有全面的代码话,那更好!,我在此先谢过拉
最佳答案
  • 五星知识达人网友:走死在岁月里
  • 2021-02-19 18:05
上面的操作可以优化,如
b = xlsheet3.Cells(j, 18) & xlsheet3.Cells(j, 19) & xlsheet3.Cells(j, 20)
c = xlsheet3.Cells(j, 23) & xlsheet3.Cells(j, 24) & xlsheet3.Cells(j, 25)
操作被执行了355次!!!
既可以使用两个数组保存这些数再进行i循环,或:

For j = 2 To 14630 Step 1
'只进行 14629次
'而不是 14629 * 355
b = xlsheet3.Cells(j, 18) & xlsheet3.Cells(j, 19) & xlsheet3.Cells(j, 20)
c = xlsheet3.Cells(j, 23) & xlsheet3.Cells(j, 24) & xlsheet3.Cells(j, 25)
for i = 2 to 356
If (xlsheet3.Cells(i, 32) = b) Then
xlsheet3.Cells(j, 15) = xlsheet3.Cells(i, 34)
End If
If (xlsheet3.Cells(i, 32) = c) Then
xlsheet3.Cells(j, 14) = xlsheet3.Cells(i, 34)
End If
next i
Next j
看看这样快了多少!!
全部回答
  • 1楼网友:时间的尘埃
  • 2021-02-19 18:28
你说呢...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯