Это будет работать, очень быстро для того, что вы хотите сделать, поскольку оно не включает ЛЮБЫЕ циклы.
Sub DeleteDuplicates()
Dim StartingScreenUpdateValue As Boolean
Dim StartingEventsValue As Boolean
Dim StartingCalculations As XlCalculation
With Application
StartingScreenUpdateValue = .ScreenUpdating
StartingEventsValue = .EnableEvents
StartingCalculations = .Calculation
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Dim varTestValues As Variant
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
With sh2
varTestValues = .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
End With
sh1.Range("L1", sh1.Range("L" & sh1.Rows.Count).End(xlUp)) _
.AutoFilter Field:=12, Criteria1:=Application.Transpose(varTestValues), Operator:=xlFilterValues
sh1.Range("L2", sh1.Range("L" & sh1.Rows.Count).End(xlUp)) _
.SpecialCells(xlCellTypeVisible).EntireRow.Delete
sh1.AutoFilterMode = False
With Application
.ScreenUpdating = StartingScreenUpdateValue
.EnableEvents = StartingEventsValue
.Calculation = StartingCalculations
End With
End Sub
Примечание: Этот код выполняется при условии, ваши данные заголовки, если он не пожалуйста, сообщите.
ПОМНИТЕ Всегда запускать любой код на копии ваших данных, а не фактические данные, пока вы не уверены в том, что он работает на 100%.
Umm, Вы можете использовать автофильтр? –
Как использовать автофильтр? –
Вы можете увидеть пример автофильтра [здесь] (http://stackoverflow.com/questions/11631363/how-to-copy-a-line-in-excel-using-a-specific-word-and-pasting-to -another-excel-s) –