[VBA ] 提升Excel逐行判斷執行效率
為了跑公司資料分析自己透過vba簡單寫了一段整理raw data格式
目前已可正常執行省下大量人工處理的時間
但其中有一段做逐行判斷會跑特別久
即便是在最新的i7四核筆電上跑,有時還是會跑到無回應...
因此想請教是否有較有效率的寫法
經過分段測試,跑最久的是這段
資料量約近萬筆(列)、每筆約100+欄位(欄)
---------------------------------------------------------
Sub Clear_Row()
'
' Delete blank row
'
Dim LastRow As Integer, r As Integer
Sheets("raw_data").Select
Range("A1").Select
Selection.End(xlDown).Select
LastRow = ActiveCell.Row
Application.ScreenUpdating = False
For r = LastRow To 2 Step -1
If Application.WorksheetFunction.Sum(Range(Cells(r, 4),_
Cells(r,100))) = 0 Or Cells(r, 2) = "WW" Then
Rows(r).Delete
End If
Next r
Application.ScreenUpdating = True
End Sub
---------------------------------------------------------
基本上做的事情就是
1.找到整串資料的最後一筆
2.由下而上判斷該筆資料是否第二攔是WW 或 第4~100欄位是0
3.若是則刪除該筆資料、否則跳過
---------------------------------------------------------
另外那行If中
其實第一個條件是想判斷第4~100欄是否全為0,但我不知道怎麼寫...
因raw data暫時不會出現負數相抵就先用sum的方式偷吃步
但還是想問問正確的做法,以免未來要處理負數的情況
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.178.251
※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1438017887.A.EA4.html
→
07/28 02:49, , 1F
07/28 02:49, 1F
→
07/28 02:52, , 2F
07/28 02:52, 2F
→
07/28 02:53, , 3F
07/28 02:53, 3F
→
07/28 02:54, , 4F
07/28 02:54, 4F
→
07/28 02:54, , 5F
07/28 02:54, 5F
→
07/28 02:56, , 6F
07/28 02:56, 6F
→
07/28 02:56, , 7F
07/28 02:56, 7F
→
07/28 06:01, , 8F
07/28 06:01, 8F
推
07/28 13:10, , 9F
07/28 13:10, 9F
→
07/28 13:10, , 10F
07/28 13:10, 10F
原來我弄錯了?!
推
07/28 15:56, , 11F
07/28 15:56, 11F
→
07/28 16:00, , 12F
07/28 16:00, 12F
→
07/28 16:08, , 13F
07/28 16:08, 13F
→
07/28 16:08, , 14F
07/28 16:08, 14F
交叉測試了一下"刪除"這動作本身應該是最久的...
※ 編輯: sarcasm (114.34.85.249), 07/29/2015 14:20:40
→
07/30 09:18, , 15F
07/30 09:18, 15F
→
07/30 11:30, , 16F
07/30 11:30, 16F
→
07/30 11:36, , 17F
07/30 11:36, 17F
推
07/30 16:53, , 18F
07/30 16:53, 18F
推
08/08 13:14, , 19F
08/08 13:14, 19F
→
08/08 13:15, , 20F
08/08 13:15, 20F
→
08/08 13:16, , 21F
08/08 13:16, 21F
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章