删除空行 - 使用VBA的MS Excel

时间:2013-10-10 20:07:59

标签: excel vba excel-vba excel-2010

我正在使用以下VBA来删除列T中没有*的所有行。它可以工作,但它一次只删除1行。我必须运行vba 25次才能删除列T中没有*的25行。你看到代码有什么问题吗?

Sub DeleteCells()

    'Loop through cells A1:A10 and delete cells that contain an "x."
    For Each c In Range("t1:t35")
        If c <> "*" Then c.EntireRow.Delete
    Next

End Sub

1 个答案:

答案 0 :(得分:4)

要删除行,您应该从下往上而不是自上而下:

Sub DeleteCells()
Dim i As Long

For i = 35 To 1 Step -1
    If Range("T" & i).Value <> "*" Then Range("T" & i).EntireRow.delete
Next i

End Sub

更有效的方法是使用自动过滤器并避免一起循环。类似的东西:

Sub DeleteCellsFilter()
    Sheet1.Range("$T$1:$T$35").AutoFilter Field:=1, Criteria1:="<>*"
    Sheet1.UsedRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.delete
    Sheet1.UsedRange.AutoFilter
End Sub

这有几个假设你应该纠正:

1)我们正在与Sheet1进行互动 2)您的范围是静态的(第1到35行)。

您应该根据需要调整这些假设。