从B列删除空行

时间:2017-11-07 16:04:47

标签: excel vba excel-vba

我正在尝试删除列B到AD(Lastrow)为空的所有行。在我的Excel工作表上,每隔两行左右的列B到AD都是空白的,所以我试图删除这些行。我一直在尝试使用以下代码:

Sub T()
    Dim rng As Range

    Set rng = Range("B1:AC10402")
    rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

没有成功

2 个答案:

答案 0 :(得分:1)

试试这段代码:

Sub DeleteBlankRows()
Dim i As Long
Dim lastRow As Long: lastRow = 10 'here you have to specify last row your table uses
For i = lastRow To 1 Step -1
    If Cells(i, Columns.Count).End(xlToLeft).Column = 1 Then
        Rows(i).Delete
    End If
Next i

End Sub

小解释

您指定需要检查行,B列到AD列中的空白。这段代码Cells(i, Columns.Count).End(xlToLeft).Column将返回最右侧的列(从第一列开始),非空单元格。如果整行是空的或第一列中有数据 - 当您考虑A cloumn时,它将返回1 - 这会产生误导。但它不在这里,因为我们认为列以B开头。因此,如果它返回1,则表示该行为空,应该删除。

答案 1 :(得分:0)

这将删除B列中的所有空白行

Dim LastRow, i As Integer
LastRow = activesheet.Cells(activesheet.Rows.Count, "A").End(xlUp).Row
For i = LastRow To 1 Step -1
    If WorksheetFunction.CountA(Range("B" & i)) = 0 Then
        Range("B" & i).EntireRow.Delete
    End If
Next i

如果列B到列AC为空,则删除所有空白行

Dim LastRow, i As Integer
LastRow = activesheet.Cells(activesheet.Rows.Count, "A").End(xlUp).Row
For i = LastRow To 1 Step -1
    If WorksheetFunction.CountA(Range("B" & i & ":" & "AC" & i)) = 0 Then
        Range("B" & i & ":" & "AC" & i).EntireRow.Delete
    End If
Next i