试图过滤大量数据并删除行

时间:2014-04-08 13:05:34

标签: excel excel-vba vba

我在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

1 个答案:

答案 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