Удалить несколько строк на основе даты - PullRequest
0 голосов
/ 15 марта 2019

Я создал макрос, в котором я удаляю каждую строку на основе даты, указанной в столбце «С».У меня проблемы с макросом, потому что он проходит через каждую строку и удаляет их по отдельности, а не по всем сразу.Есть ли способ, которым я могу ускорить процесс, чтобы он не занял 30 минут?Файл очень большой, кстати.

Sub DeleteRowsBeforeCutoff()
    Application.ScreenUpdating = False

    NumRows = Range("C3", Range("C3").End(xlDown)).Rows.Count
    Range("A1").Select
    For x = 3 To NumRows
        If Cells(x, 3) < [K1] Then
            Cells(x, 3).EntireRow.Delete
        End If
    Next x
    Application.ScreenUpdating = True
End Sub

1 Ответ

0 голосов
/ 15 марта 2019

, как писал @ Gary's, код будет зацикливаться в обратном направлении, я пытался yr code (updated) и my, чтобы удалить каждую строку в строку диапазона 25K, это результат: mycode: 00: 00: 03: 123 joecode:00: 00: 14: 1214

Оба кода:

Sub testJoe()
Dim startTime As Single
Dim i As Long
startTime = Time()
For i = Range("C2").End(xlDown).Row To 2 Step -1
    If Cells(i, 3) = 3 Then Rows(i).EntireRow.Delete
Next
Debug.Print Format(Time() - startTime, "HH:nn:ss:ms")
End Sub

Sub mytest()
Dim startTime As Single, rang As Range, sh As Worksheet
startTime = Time()
Set sh = ActiveSheet
sh.UsedRange.AutoFilter Field:=3, _
                        Criteria1:="=3", _
                        VisibleDropDown:=False
Set rang = sh.UsedRange.Offset(1, 0)
Set rang = rang.Resize(rang.Rows.Count - 1)
Set rang = rang.SpecialCells(xlCellTypeVisible)
rang.EntireRow.Delete
Selection.AutoFilter
Debug.Print Format(Time() - startTime, "HH:nn:ss:ms")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...