删除表中的过滤行

时间:2019-11-28 17:54:16

标签: excel vba

在自动过滤的视图中,如果我需要删除过滤的行,请使用

Sub deleteFiltered()
ActiveSheet.AutoFilter.Range.Offset(1, 0).Rows.SpecialCells(xlCellTypeVisible).Delete (xlShiftUp)
End Sub

,它像我期望的那样工作。

但是我什至意识到如果我处理一个“真实”表,这是行不通的。如何删除表中已过滤的行?

1 个答案:

答案 0 :(得分:1)

将此表想象为ListObject


样本数据:

enter image description here


示例代码:

Sub DeleteFilteredRows()
    With Sheet1 'Change according to your own sheets CodeName
        With .ListObjects("Table1").DataBodyRange 'Change to name of your table
            .AutoFilter
            .AutoFilter Field:=2, Criteria1:="B" 'Sample filter applied
            .EntireRow.Delete
            .AutoFilter
        End With
    End With
End Sub

结果:

enter image description here