如果列中的上一个单元格为空,则删除行

时间:2014-01-10 22:41:26

标签: excel excel-vba vba

我有一个包含大量空白单元格的列,对于每个空白单元格,我想删除包含空白单元格的行以及它下面的行。它删除了一个空白单元格下方的每一行,这对我来说是非常棘手的。

2 个答案:

答案 0 :(得分:0)

如果要搜索A列,则可以使用此代码删除所有包含空白单元格的行以及该行下方的行。当您删除行时,代码将从下到上进行搜索,以便不跳过任何行。

Sub DeleteRows()
    For i = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row To 2 Step -1
        If ActiveSheet.Cells(i, 1).Value = vbNullString Then
            ActiveSheet.Cells(i, 1).EntireRow.Delete '~~> Removes the blank row
            ActiveSheet.Cells(i, 1).EntireRow.Delete '~~> Removes the row that were under the blank row
        End If
    Next i
End Sub

答案 1 :(得分:0)

几分钟前发布的另一个答案接近正确答案。我修改它以使用递归,我尝试的几个测试场景似乎工作。诀窍是让它与多个空白行一起使用。

Public Sub DeleteBlanks(rng As Range)
Dim cell As Range
For Each cell In rng.Cells
    EvaluateCell cell
Next cell
End Sub

Public Sub EvaluateCell(cell As Range)
If cell.Value = "" Then
    If cell.Offset(1, 0).Value = "" Then
        EvaluateCell cell.Offset(1, 0)
    Else
        cell.Offset(1, 0).EntireRow.Delete
    End If
    cell.EntireRow.Delete
End If
End Sub

Sub Testing()
DeleteBlanks Selection
End Sub