excel学习库

excel表格_excel函数公式大全_execl从入门到精通

奇妙的VBA代码之二十八:EXCEL中,如何批量删除工作表中的空白行

今日讲解奇妙的VBA代码之二十八:EXCEL中,如何批量删除工作表中的空白行。要首先讲解的是Range对象的Delete方法,此方法用于删除对象。语法:expression.Delete(Shift) 参数:a) expression是必需的,返回一个Range对象。b) Shift是可选的,指定删除单元格时替补单元格的移位方式。可为以下 XlDeleteShiftDirection常量之一:xlShiftToLeft或xlShiftUp。如果省略该参数,则Microsoft Excel将根据区域的图形决定移位方式。 下面我们将就实际的应用来讲解如何应用DELETE方法,这个方法也是VBA中应用中非常广泛的。可以用于VALUE的删除,也可以用于格式的删除,还可以用于行的删除等等,今日讲解的就是行的删除。要根据具体的条件来选择删除的对象,这就要根据实际问题的来做具体的判断,这里我要讲解的是“如何删除空白行”这个问题。这个问题也是在实际工作中应用最为广泛的方法。下面我们看代码: Sub MyDelBlankRow() Dim rRow As Long Dim LRow As Long Dim i As Long rRow = Sheets("Sheet9").UsedRange.Row LRow = rRow + Sheets("Sheet9").UsedRange.Rows.Count - 1 For i = LRow To rRow Step -1 If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete End If Next End Sub 代码解析:MyDelBlankRow过程删除工作表中已使用的区域的所有空行。 a) 第5行代码获得工作表中已使用区域的首行行号,其中使用UsedRange属性返回工作表中已使用的区域。 b) 第6行代码获得工作表中已使用区域的最后一行行号。 c) 第7行到第11行代码从最大行数至最小行数循环判断指定行是否为空行,若为空行则删除该行。 d) 其中第8、9行代码使用工作表CountA函数判断当前行已使用单元格的数量,如果为零说明此行是空行则使用Delete删除。 e) UsedRange属性应用于Worksheet对象,返回指定工作表中已使用区域的Range对象,即返回工作表中已使用的单元格区域。 f) UsedRange.Row表示已用单元格第一行的序数; UsedRange.Rows.Count表示已用单元格第一行的行数; g) WorksheetFunction.CountA 方法 用于计算非空单元格及参数列表中值的个数。 h) Application.WorksheetFunction.CountA(Rows(i)) 表示选中Rows(i)行的非空单元格的个数。 需要注意点是: 此处一定要从最大行数至最小行数开始循环判断,因为如果工作表中存在两行及两行以上的相邻空行,从最小行数开始循环删除的话,当第一行空行被删除后,被删除行下面的一行会往上移位,而此时For...Next循环的计数器已经加1,所以会出现漏删除的现象。 运行MyDelBlankRow过程工作表区域所示: 代码窗口: 运行后的结果: 今日内容回向: 1 删除工作表行的思路是什么? 2 UsedRange.Row 意义是什么? 3 Application.WorksheetFunction.CountA(Rows(i)) 是什么意义?

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接