使用VBA删除所有具有空“B”列的行

时间:2016-06-13 16:48:49

标签: excel vba excel-vba

我正在寻找创建一个宏来删除B列中不包含任何数据的所有行。任何帮助都将不胜感激。这就是我现在所拥有的一切。

Sub DeleteAllEmptyBRows()
Dim lr As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
    For Each cell In Range("B1:B" & lr)
        If cell.Value = "" Then
            cell.Row.Delete
            Exit Sub
        End If
   Next cell
End Sub

2 个答案:

答案 0 :(得分:3)

您可以使用SpecialCells快速执行此操作:

Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

我会使用上面的内容,但也是为了您自己的知识,以下是您按照代码执行此操作的方法:

Sub DeleteAllEmptyBRows()
Dim lr As Long, i&

lr = Cells(Rows.Count, "B").End(xlUp).Row

For i = lr To 1 Step -1 'Since you're deleting rows, start at the end, and work upwards
    If Cells(i, 2).Value = "" Then
        Cells(i, 2).EntireRow.Delete
    End If
Next i

End Sub

请注意,在第一次删除行之后,您的Exit Sub就有了 for (x = 0; x <= i; x++) { 。我删除了它,因为你想循环遍历范围内的所有单元格。同样,这是一个循环所以需要更长的时间,并且比上面简单的一个衬里有更多的错误空间。

答案 1 :(得分:1)

您缺少一些参数:

Cells(cell.Row, 2).Delete Shift:=xlUp

如果您需要整行,只需更改为:

cell.Row.EntireRow.Delete