您好我正在处理VBA代码,该代码遍历我的所有数据,如果它是空白的,则只删除整行。因此,删除空行后,行会向上移动。
但是,如果我有一行包含一些数据。我希望那一行保持不变。
我看到的所有示例都删除了整行,即使它在行中有一些数据。其中一些删除了行,但没有删除行,以便细胞向上移动。
请帮帮我。
答案 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