- 帖子
- 154
- 主題
- 1
- 精華
- 0
- 積分
- 200
- 點名
- 3
- 作業系統
- windwos 7
- 軟體版本
- 64bit
- 閱讀權限
- 20
- 註冊時間
- 2017-5-29
- 最後登錄
- 2026-7-8
|
本帖最後由 quickfixer 於 2020-12-10 09:54 編輯
回復 7# lilizzzz
猜測可能是資料太多,用字串處理長度太長
改用range集合來刪,請測試
Sub test()
Dim dr As Range
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
Sheets("工作表1").Select
Range("A2").Select
Set dic = CreateObject("scripting.dictionary")
For i = Range("A2000").End(3).Row To 1 Step -1
If dic.exists(Cells(i, "A").Value) Then
If dr Is Nothing Then
Set dr = Rows(i)
Else
Set dr = Union(dr, Rows(i))
End If
Else
dic(Cells(i, "A").Value) = ""
End If
Next i
dr.EntireRow.Delete
Set dr = Nothing
Set dic = Nothing
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True
End Sub |
|