Excel宏/ VBA - 如果一列中的单元格为空,如何删除整行?

时间:2016-02-18 16:45:30

标签: excel vba excel-vba delete-row

我想要一个宏代码,(1)从第3行开始,(2)并删除其B列中的单元格为空的任何行。我试过......

Sub DelBlankRows()  
    Columns("B:B").Select  
    Selection.SpecialCells(xlCellTypeBlanks).Select  
    Selection.EntireRow.Delete  
End Sub

并且

Sub delrows()  
     Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete  
End Sub

2 个答案:

答案 0 :(得分:0)

最好也是定义工作表:

Sub test()
    Worksheets("sheet1").Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlUp
End Sub

将删除列B为空的每一行。

如果您需要从第3行开始直到最后一行:

Sub test()
    Dim lr As Double
    lr = Worksheets("Sheet1").Range("B65536").End(xlUp).Row
    Worksheets("Sheet1").Range("B3:B" & lr).SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlUp
End Sub

答案 1 :(得分:0)

有可能,你将把这个循环到某个东西...... 给出的简明答案不会“更新”循环的行索引。我提出了一个更清晰的选项,可能适合你正在做的事情:

伪代码

For row = start To rowcount
    If cells(row,column).Value = "" Then
        Cells(row,column).EntireRow.Delete shift:=xlUp
        row = row-1  'this is because the xlUp shift changes index for all rows BELOW your loop
    End If
Next row