저는 큰 정보 테이블을 가지고 있습니다. 내가 뭘 하려는지 필터 및 특정 행을 삭제합니다 (총 열에 비어 있음).많은 양의 데이터를 필터링하고 행을 삭제하려고 시도합니다.
코드는 영원히 걸립니다. 테이블에 30,000 개가 넘는 행이 있습니다.
총계는 VBA에 의해 생성 된 수식이 아니므로 수식의 속도가 느려지지 않습니다. 나는 도움이되어야한다 그래서 그것을 실행할 때 Application.ScreenUpdating = False
가있다.
나는 더 빨리 달리는 방법을 모르겠다. 나는 루프가 더 느리지 만 다른 방법을 시도해 보는 것이 행복하다고 생각했을 것이다.
Application.ScreenUpdating = False
lngLastRow = Worksheets("report").Cells(Rows.Count, "b").End(xlUp).Row
Set rngFilter = Worksheets("report").Range("B7:n" & lngLastRow)
rngFilter.AutoFilter Field:=13, Criteria1:="0.00"
With ActiveSheet.AutoFilter.Range
On Error Resume Next
Set rng2 = .Resize(.Rows.Count - 1, 1) _
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
On Error GoTo 0
End With
ActiveSheet.ShowAllData
Application.ScreenUpdating = True
코드에서 가장 느린 작업은 _ 행을 삭제하는 것입니다. 연속적으로 _non_ 연속 행을 삭제하는 것은 느리지 만 인접 행을 매우 빠르게 삭제합니다. 조건에 따라 열의 범위를 정렬 한 다음 행을 필터/삭제할 수 있습니다. –
감사합니다. 잘하면 잘될 것입니다. 그것은 코드를 기록하려고 할 때 Excel에서 수행 할 때와 같습니다. –
삭제가 필요한 행 번호의 목록을 수집하고, 범위를 배열로 던지고, 행을 삭제하고, 다시 배열하고 범위에 다시 배치 할 수 있습니다. 배열 작업은 항상 훨씬 빠릅니다. –