仅当行为空时删除整个行,否则如果任何行包含任何数据,则为

时间:2016-01-13 00:27:04

标签: vba excel-vba row excel

您好我正在处理VBA代码,该代码遍历我的所有数据,如果它是空白的,则只删除整行。因此,删除空行后,行会向上移动。

但是,如果我有一行包含一些数据。我希望那一行保持不变。

我看到的所有示例都删除了整行,即使它在行中有一些数据。其中一些删除了行,但没有删除行,以便细胞向上移动。

请帮帮我。

2 个答案:

答案 0 :(得分:0)

尝试以下方法 -

Option Explicit
Sub DeleteBlankRow()
    Dim i As Long

    ActiveSheet.UsedRange.Select
    '//- Turn off calculation and screenupdating.
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
            '//- Work backwards because we are deleting rows.
            For i = Selection.Rows.Count To 1 Step -1
                If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
                    Selection.Rows(i).EntireRow.Delete
                End If
            Next i
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
End Sub

答案 1 :(得分:0)

您可以使用此算法:
1)找到包含任何值的最后一行;
2)如果行中的值计数等于零,则执行循环遍历行并计算行和删除行中的值,它可以如下所示:

Sub DeleteBlankRows()
    Dim i&: i = Cells.Find("*", , , , xlByRows, xlPrevious).Row
    While i <> 0
        If WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete
        i = i - 1
    Wend
End Sub