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

我正在创build一个macros,删除列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 

您可以使用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 。 我删除了这个,因为你想遍历范围内的所有单元格。 同样,这是一个循环,所以比上面简单的一个class轮需要更长的时间,并且有更多的错误空间。

您缺less一些参数:

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

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

 cell.Row.EntireRow.Delete