[VBA ] 循环跑很慢

楼主: kikkoko (海海人生)   2014-06-16 19:51:04
大约三千多笔资料,跑个循环+ if then竟然要跑这么久
请问有哪边可以改写让程式效率更快速吗~ tks~
程式码:
Sub XX()
Application.ScreenUpdating = False
Dim i As Integer
Dim AA As Integer
Dim BB As String
i = 2
Do Until Cells(i, 1).Value = ""
If Cells(i, 1).Value Like "ASM*" Then
AA = Application.Find("_", Cells(i, 3))
BB = Left(Cells(i, 3), AA - 2)
Cells(i, 13).Value = BB
End If
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub
作者: Catbert (宅男)   2014-06-16 23:02:00
用Instr取代Application.Find吧
楼主: kikkoko (海海人生)   2014-06-16 23:14:00
跑的速度不多~有用过
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-06-17 00:33:00
这么久是多久
作者: tsongs (......)   2014-06-17 00:58:00
EXCEL不是数据库 3000笔的确会跑很久Like那边改成 left(Cells(i,1),3) = "ASM" 看看数据库用LIKE也会慢不少 不清楚这样能不能改善这种花时间的可以写个变量不同语法看跑的时间差看
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-06-17 12:30:00
VB和SQL的LIKE operator是两回事 请勿擅自引申 谢谢
楼主: kikkoko (海海人生)   2014-06-17 22:39:00
约2:15秒,LIKE不用仅快1秒有想过先用autofilter把ASM筛出来再做动作,但不太会XD
作者: GoalBased (Artificail Intelligence)   2014-06-17 23:09:00
先厘清慢的问题在哪?
楼主: kikkoko (海海人生)   2014-06-18 00:52:00
三千笔资料无法缩减…就是三千笔的情况下跑循环
作者: tsongs (......)   2014-06-18 08:12:00
3000笔2分钟还好 要是执行频率太频繁 建议写入数据库大量资量还是用数据库才快

Links booklink

Contact Us: admin [ a t ] ucptt.com