作者kikkoko (海海人生)
看板Visual_Basic
標題[VBA ] 迴圈跑很慢
時間Mon Jun 16 19:51:04 2014
大約三千多筆資料,跑個迴圈+ 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://webptt.com/m.aspx?n=bbs/Visual_Basic/M.1402919467.A.E39.html
1F:→ Catbert:用Instr取代Application.Find吧 06/16 23:02
2F:→ kikkoko:跑的速度不多~有用過 06/16 23:14
3F:→ MOONRAKER:這麼久是多久 06/17 00:33
4F:推 tsongs:EXCEL不是資料庫 3000筆的確會跑很久 06/17 00:58
5F:→ tsongs:Like那邊改成 left(Cells(i,1),3) = "ASM" 看看 06/17 01:00
6F:→ tsongs:資料庫用LIKE也會慢不少 不清楚這樣能不能改善 06/17 01:02
7F:→ tsongs:這種花時間的可以寫個變數不同語法看跑的時間差 06/17 01:04
8F:→ tsongs: 看 06/17 01:05
9F:→ MOONRAKER:VB和SQL的LIKE operator是兩回事 請勿擅自引申 謝謝 06/17 12:30
10F:→ kikkoko:約2:15秒,LIKE不用僅快1秒 06/17 22:39
11F:→ kikkoko:有想過先用autofilter把ASM篩出來再做動作,但不太會XD 06/17 22:40
12F:推 GoalBased:先釐清慢的問題在哪? 06/17 23:09
13F:→ kikkoko:三千筆資料無法縮減…就是三千筆的情況下跑迴圈 06/18 00:52
14F:推 tsongs:3000筆2分鐘還好 要是執行頻率太頻繁 建議寫入資料庫 06/18 08:12
15F:→ tsongs:大量資量還是用資料庫才快 06/18 08:13