Sub DeleteEmptyRow() Dim i As Integer For i = 94 To 2 Step -1 If Cells(i, 1) = "" Then Sheets("sheet1").Rows(i).Delete End If Next i End Sub 大佬啊,我感觉逻辑语法好像都没问题,为啥总是把第二行以后的数据都删了呢。我只想删除空白行呀
说一下我的方法,一种是直接在单元格上删除,一种是通过数组直接得到非空值。 假设a2:an有一列数据,数据中有2个以上空值。 通过数组得到非空值,代码如下: Sub GetNonnullRow() Dim arr, brr(), n&, i&, r& r = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row arr = Range("a2:a" & r) For i = 1 To UBound(arr) If arr(i, 1) <> "" Then n = n + 1 ReDim Preserve brr(1 To n) brr(n) = arr(i, 1) End If Next [c2].Resize(n) = Application.Transpose(brr) End Sub 直接在单元格上删除,代码如下: Sub DeleteEmptyRow() Dim rng As Range, i&, k&, r& r = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Do k = k + 1 Loop Until Cells(k, 1) = "" Set rng = Cells(k, 1) '获取第一个空值 For i = 2 To r If Cells(i, 1) = "" Then Set rng = Union(rng, Cells(i, 1)) End If Next rng.Delete Shift:=xlUp End Sub
Sub 宏1() Dim a, c, d, i For i = 1000 To 1 Step -1 a = Rows(i).Value For Each c In a If c = "" Then d = d + 1 If d = UBound(a, 2) Then Rows(i).Delete d = 0 Exit For End If Else Exit For End If Next c Next i End Sub i循环是行号,可以视情况写成变量。