[VBA ] 迴圈跑很慢

看板Visual_Basic作者 (海海人生)時間10年前 (2014/06/16 19:51), 編輯推噓3(3012)
留言15則, 5人參與, 最新討論串1/1
大約三千多筆資料,跑個迴圈+ 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 -- t a ◢██◣◢██◣◥███◣█████◣球˙來就打═╮t a h n █◤ ◥ █◤ ◥ ████ █ █ █ h n e s █ █ █▌ ██◣ ◢◤ e s w ˙─────────────────────── w e ◥██◤ ◥██◤ █▌ ██◤███ ╱ ╰ e r 3╰═══════════ ════════════ Copy CCF -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.11.114 ※ 文章網址: http://www.ptt.cc/bbs/Visual_Basic/M.1402919467.A.E39.html

06/16 23:02, , 1F
用Instr取代Application.Find吧
06/16 23:02, 1F

06/16 23:14, , 2F
跑的速度不多~有用過
06/16 23:14, 2F

06/17 00:33, , 3F
這麼久是多久
06/17 00:33, 3F

06/17 00:58, , 4F
EXCEL不是資料庫 3000筆的確會跑很久
06/17 00:58, 4F

06/17 01:00, , 5F
Like那邊改成 left(Cells(i,1),3) = "ASM" 看看
06/17 01:00, 5F

06/17 01:02, , 6F
資料庫用LIKE也會慢不少 不清楚這樣能不能改善
06/17 01:02, 6F

06/17 01:04, , 7F
這種花時間的可以寫個變數不同語法看跑的時間差
06/17 01:04, 7F

06/17 01:05, , 8F
06/17 01:05, 8F

06/17 12:30, , 9F
VB和SQL的LIKE operator是兩回事 請勿擅自引申 謝謝
06/17 12:30, 9F

06/17 22:39, , 10F
約2:15秒,LIKE不用僅快1秒
06/17 22:39, 10F

06/17 22:40, , 11F
有想過先用autofilter把ASM篩出來再做動作,但不太會XD
06/17 22:40, 11F

06/17 23:09, , 12F
先釐清慢的問題在哪?
06/17 23:09, 12F

06/18 00:52, , 13F
三千筆資料無法縮減…就是三千筆的情況下跑迴圈
06/18 00:52, 13F

06/18 08:12, , 14F
3000筆2分鐘還好 要是執行頻率太頻繁 建議寫入資料庫
06/18 08:12, 14F

06/18 08:13, , 15F
大量資量還是用資料庫才快
06/18 08:13, 15F
文章代碼(AID): #1Jdjehuv (Visual_Basic)