我在Excel中有一个大的信息表。我想要做的是过滤它并删除某些行(列中的总数为空)。
代码工作只需要永远。表中有超过30k行。
总数是由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
答案 0 :(得分:1)
如果在代码被激活的时候关闭公式计算,它可以加速它,如果它包含大量的计算单元格
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.EnableCalculation = False
Next
当然,在代码完成后将其重新打开
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.EnableCalculation = True
Next