Подготовлено 466 строк для удаления из массива в 1000 строк.
DelRowsRS - 0,0859375
d_rows_1 - 0,1015625
d_rows_2 - 0,078125
delFilter - 4,867188
УдалениеСтрокОднимМахом - 0,1796875
Подготовлено 4666 строк для удаления из массива в 10000 строк.
DelRowsRS - 1
d_rows_1 - 1,296875
d_rows_2 - 3,546875
УдалениеСтрокОднимМахом -
78,05469 Снят с дистанцииdelFilter - 47,90625
Подготовлено 14000 строк для удаления из массива в 30000 строк.
DelRowsRS - 9,476563
d_rows_1 - 12,92188
d_rows_2 -
76,78906 Снят с дистанцииdelFilter -
141,5078 Снят с дистанцииФильтр сильно разочаровал
Подготовлено 46666 строк для удаления из массива в 100000 строк.
DelRowsRS - 105,1563
d_rows_1 - 138,2578
Подготовлено 93334 строк для удаления из массива в 200000 строк.
DelRowsRS - 372,1094
d_rows_1 - 525,3906
Sub delFilter()
Dim t!, lr&
t = Timer
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.Range("A1:A" & lr).AutoFilter _
Field:=1, Criteria1:=RGB(255, 255, 0), Operator:=xlFilterCellColor
ActiveSheet.AutoFilter.Range.Offset(1).EntireRow.Delete
ActiveSheet.AutoFilter.Range.AutoFilter
Debug.Print "delFilter - " & Timer - t
Application.ScreenUpdating = True
End Sub
Sub DelRowsRS()
Dim lr&, n&, i&, ii&
Dim sF$, s$, spl
Dim k: k = 4
Application.ScreenUpdating = False
lr = Cells(Rows.Count, 1).End(xlUp).Row
n = ActiveSheet.UsedRange.Row
s = "A"
For i = lr To n Step -1
If Cells(i, 1).Interior.ColorIndex = 6 Then GoSub sRange
Next
If Len(s) Then sF = sF & "|" & Left(s, Len(s) - 2)
If Len(sF) Then
spl = Split(sF, "|")
For i = 1 To UBound(spl)
Range(spl(i)).EntireRow.Delete
k = k + 1
Next
End If
Application.ScreenUpdating = True
Exit Sub
sRange:
s = s & i & ",A"
' =====check len===============
ii = ii + Len(Format(i, 0)) + 2
If ii >= 248 Then
sF = sF & "|" & Left(s, Len(s) - 2)
s = Left(s, Len(s) - 2)
ii = 0
s = "A"
End If
' ====================
Return
End Sub