我正在寻找创建一个宏来删除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
答案 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