Удаление дубликатов, сохранение последней записи - оптимизация

Я работаю над макросом, который пройдет через электронную таблицу и удалит дублирующиеся записи (строки) на основе двух критериев, которые представлены отдельно в двух столбцах (столбцы Q и D).

Вот что у меня есть. Я проверил это на небольшом наборе данных, и этомедленный.

Sub RemoveDupesKeepLast()
dim i As Integer
dim criteria1, criteria2 As String

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

'start at bottom of sheet, go up
For i = ActiveSheet.UsedRange.Rows.Count to 2 Step -1

    'if there is no entry, go to next row
    If Cells(i, "Q").Value = "" Then
        GoTo gogo:
    End If

    'set criteria that we will filter for
    criteria1 = Cells(i, "D").Value
    criteria2 = Cells(i, "Q").Value

    'filter for criteria2, then criteria1 to get duplicates
    ActiveSheet.Range("A":"CI").AutoFilter field:=17, Criteria1:=criteria2, Operator:=xlFilterValues
    ActiveSheet.Range("A":"CI").AutoFilter field:=4, Criteria1:=criteria1, Operator:=xlFilterValues

    'if there are duplicates, keep deleting rows until only bottom-most entry is left behind
    Do While Range("Q2", Cells(Rows.Count, "Q").End(xlUp)).Cells.SpecialCells(xlCellTypeVisible).Count > 1
        ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1,17).EntireRow.Delete
    Loop

    'reset autofilter
    If ActiveSheet.FilterMode Then
        Cells.AutoFilter
    End If

gogo:
Next i

Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

Есть ли другой способ, которым я могу подойти к этой проблеме, чтобы ускорить процесс? Как сейчас, я в основном проверяю каждую строку, пока не доберусь до вершины. Листы на самом деле где-то от 30000 строк до макс. Мне кажется, что должен быть более быстрый и чистый способ достижения того, что я пытаюсь сделать, но я не могу думать об этом.

Ответы на вопрос(2)

Ваш ответ на вопрос