excel vba - 删除除标题和小计之外的所有行

时间:2014-08-18 16:23:41

标签: excel vba excel-vba

我使用以下代码,我在已过滤的列表中设置了一个范围,我想删除可见的单元格。我因为标题行而偏移了1,但是我在代码的最底部也有一行,我的总计在最后一行,我怎样才能删除除最后一行以外的所有可见行以保持我的总数?

With rng
    .AutoFilter Field:=5, Criteria1:="<>*" & owner & "*"
    .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With

由于

3 个答案:

答案 0 :(得分:2)

试试这个

.AutoFilter Field:=5, Criteria1:="<>*" & owner & "*"
ActiveSheet.Rows(250).Hidden = True
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete

编辑:在聊天中发表讨论。

自动过滤时,行地址永远不会更改。因此,只需在自动过滤后隐藏行即可完成:)

答案 1 :(得分:0)

你可以调整位置&amp;在过滤以排除第一行和最后一行之前,相应地调整范围

With r.Offset(1, 0).Resize(r.Rows.Count - 2)
    .AutoFilter Field:=5, Criteria1:="<>*" & owner & "*"
    .SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With

答案 2 :(得分:0)

我不明白你的自动过滤器标准,但这应该给你一个开始,

For x = 2 To Range("A65536").End(xlUp).Row - 1
If Sheets("sheet1").Rows(x).Hidden = False Then
    If 1 = 1 Then  ' Replace 1=1 with your autofilter criteria
        Cells(x, 1).EntireRow.Delete
    Else
    End If
Else
End If
Next x

编辑:我及时发布了更好的答案。