作者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/cn.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