標題:
請問各位大神加快 VBA 刪除為0的儲存格公式的程式寫法
[打印本頁]
作者:
jeffrey628litw
時間:
2019-12-20 09:46
標題:
請問各位大神加快 VBA 刪除為0的儲存格公式的程式寫法
以下是我爬文抓到的,但實用後跑檔案10MB,
工作表中 D欄 判斷並刪除 100筆左右0的公式資料,花了7分鐘,
請問如何加快程式碼跑的速度呢?
如何加快此 VBA Module10 程式的速度呢?
Sub TT()
Dim t1
t1 = Timer '這是產生秒數的 MSG
'==============================================================
'刪除 D 欄(儲存格 O2~O101)為0時的儲存格公式資料
Range("D2").Select
For X = 1 To 1
For y = 2 To 101
If ActiveCell(y, X) = 0 Then
ActiveCell(y, X) = ""
Else
End If
Next y
Next X
'以下為顯示VBA Run程式的時間 + 這是產生秒數的 MSG
MsgBox "抓資料完成! " & Chr(10) & "使用時間:" & Round(Timer - t1, 2) & " 秒" & Chr(10) & "您輸入的條件比對後,共計有" & " " & Application.CountA(Sheets("比對廠編後資料").Columns("A:A")) - 1 & " " & "筆資料"
'以下為產生Msgbox 說明比對後有幾筆不重複的資料
'MsgBox "您輸入的" & "條件" & "比對後,共計有" & " " & APplication.CountA(Sheets("比對廠編後資料").Columns("A:A")) - 1 & " " & "筆資料"
End Sub
'==============================================================
檔案下載:[attach]31565[/attach]
作者:
jeffrey628litw
時間:
2019-12-20 10:35
'刪除 D 欄(儲存格
D2~D101
)為0時的儲存格公式資料
應該是 D2 ~ D101
作者:
jeffrey628litw
時間:
2019-12-20 16:46
不好意思,是我另一個模糊查詢表資料有3000筆導致速度變慢,我已經將模糊查詢表查詢條件改掉舊便很快了。謝謝各位。
作者:
adrian_9832
時間:
2019-12-20 21:02
本帖最後由 adrian_9832 於 2019-12-20 21:10 編輯
假設 每次D那行 0 數值那行的資料 沒有中斷 而且資料都是 一直是0 而且不會 0 0 0 0 之後不是 0 再之後又是 0
Sub test()
i = 2
Do Until Cells(i, 4) = ""
If Cells(i, 4) = "0" Then
Count = Count + 1
Else
Start = i
End If
i = i + 1
Loop
Range("d" & Start + 1 & ":" & "d" & Count + 10).Select
Selection.ClearContents
End Sub
最後提醒一下 以上只可以在 一行 都是 0 才能用
比如以下這樣:
111
222
333
abc
123aft
2t1111
0
0
0
0
0
0
0
0
0
0
0
0
....
而不是這樣情況下用
0
0
0
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
作者:
adrian_9832
時間:
2019-12-20 21:22
本帖最後由 adrian_9832 於 2019-12-20 21:23 編輯
方法2:
Sub test2()
Columns("D:D").Select
Selection.SpecialCells(xlCellTypeFormulas, 1).Select
Selection.ClearContents
End Sub
複製代碼
這可以隔資料 而且簡單 快捷
作者:
jeffrey628litw
時間:
2019-12-20 21:40
回復
4#
adrian_9832
大大您好:實測結果是OK的,我的電腦速度約70秒。感謝大大的指導分享。
作者:
jeffrey628litw
時間:
2019-12-20 21:40
回復
5#
adrian_9832
大大您好:實測結果是OK的,我的電腦速度也是約70秒。感謝大大的指導分享。
作者:
quickfixer
時間:
2019-12-24 05:22
本帖最後由 quickfixer 於 2019-12-24 05:30 編輯
回復
1#
jeffrey628litw
你的頭尾各加1行Application.Calculation,就可以跑很快了
ABC 20191219-V.04版,沒修改前,我的電腦要跑40秒
sub tt()
Application.Calculation = xlCalculationManual
你的程式碼
Application.Calculation = xlCalculationAutomatic
end sub
執行結果如下
[attach]31573[/attach]
用4f,5f更快
sub tt()
Application.Calculation = xlCalculationManual
4f,5f程式碼
Application.Calculation = xlCalculationAutomatic
end sub
執行結果如下
[attach]31574[/attach]
作者:
jeffrey628litw
時間:
2019-12-24 18:26
回復
8#
quickfixer
感謝大神的協助,超感激的。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)