[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