Excel 正在尝试筛选大量数据并删除行

Excel 正在尝试筛选大量数据并删除行,excel,vba,Excel,Vba,我在excel中有一个很大的信息表。我试图做的是过滤它并删除某些行(其中一列中的total为空) 代码可以工作,只需要永远。表中有超过3万行 总数是由VBA生成的一个数字,而不是一个公式,所以这并不会减慢速度。当我运行Application.ScreenUpdating=False时,我有Application.ScreenUpdating=False,这应该会有所帮助 我不知道如何使它跑得更快。我本以为循环可能更慢,但很乐意尝试一些不同的方法 Application.ScreenUpdatin

我在excel中有一个很大的信息表。我试图做的是过滤它并删除某些行(其中一列中的total为空)

代码可以工作,只需要永远。表中有超过3万行

总数是由VBA生成的一个数字,而不是一个公式,所以这并不会减慢速度。当我运行Application.ScreenUpdating=False时,我有
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

如果它包含大量计算单元,则可以在代码超出时关闭公式计算,从而将其速度提高一点

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
当然,在代码被删除后再打开它

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

代码中最慢的操作是删除行。实际上,删除非连续行的速度很慢,但删除连续行的速度非常快。尝试根据您的条件对列中的范围进行排序,然后应用筛选/删除行。谢谢,这很有意义,希望能奏效。当我在excel中尝试记录代码时会这样做。收集需要删除的行号列表、将范围放入数组、删除其中的行、重拨并将数组放回范围可能会更快。使用阵列总是要快得多。我以前学过阵列,但后来就没用过。我想我需要看看能不能找到我的笔记。