说起批量删除空行,是我这工作中遇到的算是比较早的难题,当时是没有通过VBA来操作,而是通过添加辅助列完成的,今天我来说下怎么通过VBA来批量删除空行,大家来看一段程序,我会给追条给大家解释一下,程序是怎么一步步完成批量删除空行的。
Sub deletemptyrows()
Dim lastrow As Long ‘定义最后一行的变量
Dim r As Long ‘定义循环变量
Dim counter As Long ’ 定义总共删除多少空行的变量
Application.ScreenUpdating = False ’禁止屏幕更新,运行速度可以更快
lastrow = ActiveSheet.UsedRange.Rows.Count _
ActiveSheet.UsedRange.Rows(1).Row - 1
For r = lastrow To 1 Step -1
If Application.WorksheetFunction.CountA(Rows(r)) = 0 Then
Rows(r).Delete
counter = counter 1
End If
Next r
Application.ScreenUpdating = True ’恢复屏幕更新
MsgBox counter & ' empty rows were deleted.'
End Sub
重点我们讲解一下中间部分的内容,先来看这一句代码:
lastrow = ActiveSheet.UsedRange.Rows.Count _
ActiveSheet.UsedRange.Rows(1).Row - 1
ActiveSheet.UsedRange.Rows.Count 的意思就是已用数据区域的行数,如下图:
上面的例子ActiveSheet.UsedRange.Rows.Count返回的数值是14行(红色方框),就是表格里选择区域的行数,而ActiveSheet.UsedRange.Rows(1).Row返回的行号是3,就是已用区域的第一行的行号,减去1,就是上面空余的行数,所以lastrow=14 2,就是16,在看图上数据区域最后的行号是16行,就是我们计算的最后一行的行号,整个循环是倒着循环的也就是先计算16行,然后是15行,14行,。。。。。
Application.WorksheetFunction.CountA(Rows(r)) = 0 这一句里面的Row(r)就是选中某一整行,CountA(Rows(r)) = 0 意思就是选中的这一整行如果非空单元格个数为0,说明这一行啥数据都没有,就可以用Rows(r).Delete删除了, 删除一行counter加1,这样循环下来counter的值就是总共删除空余行数的总和,最后用msgbox呈现给用户,罗罗说说讲了这么多,感觉还是没讲怎么清楚,请大家包涵,如果有疑问,可以发信息给我,大家互相学习一下。
谢谢关注:
联系客服