我正在尝试删除列B到AD(Lastrow)为空的所有行。在我的Excel工作表上,每隔两行左右的列B到AD都是空白的,所以我试图删除这些行。我一直在尝试使用以下代码:
Sub T()
Dim rng As Range
Set rng = Range("B1:AC10402")
rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
没有成功
答案 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