我有一個刪除重複項的宏(基於列A)。它排序P中上升然後刪除整個行是一個重複的,所以我可以確保的是,宏只刪除最早的行(列P =日期):刪除重複項(海量數據,非常慢)
Sub SortAndRemoveDUBS()
Dim Rng As Range
Dim LastRow As Long
Dim i As Long
Application.ScreenUpdating = False
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
Set Rng = Range("A4:P" & LastRow)
With Rng
.Sort Key1:=Range("A4"), Order1:=xlAscending, key2:=Range("P4"), order2:=xlDescending, _
Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End With
For i = LastRow To 2 Step -1
If WorksheetFunction.CountIf(Range(Cells(2, "A"), Cells(i, "A")), Cells(i, "A")) > 1 Then
Rows(i).Delete
End If
Next i
Application.ScreenUpdating = True
End Sub
但宏是很慢的。有沒有辦法加快速度?我認爲這是因爲他刪除了每一個重複的一個。
如果你有很多的公式加上'Application.Calculation = xlCalculationManual'頂端,只記得設置回用'Application.Calculation = xlCalculationAutomatic' –
有在片沒有公式。 – Bluesector
@Bluesector爲什麼列P是日期,列是你的ID? 爲什麼在你排序後,你不檢查單元格(i,1)=單元格(i-1,1)?!?! ? 我試了兩種方式,你和我的50K的記錄。你的時間是00:01:21,我的00:00:23。 PS:可以是我缺少的東西,請解釋一下 – Fabrizio