Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1536|回复: 6

[已解决]急!请求各位大侠帮忙。

[复制链接]
发表于 2011-8-16 17:29 | 显示全部楼层 |阅读模式
下面代码用来删除一个工作表中的多余行,这些行包含公式,结果为空的要删除。但操作时只能删除几行,还有一些行未能删除,要多次操作,不知何故,请各位大侠帮忙。

Sub 删除单科统计表多余行()
   Sheets("单科统计表").Select
    Dim rng As Range
    For Each rng In Range("a:a")
        If rng.Row > Application.ActiveSheet.UsedRange.Rows.Count Then Exit For
        If rng.Value = "" Then Rows(rng.Row).Delete
    Next rng
End Sub
最佳答案
2011-8-16 17:38
  1. Sub 删除单科统计表多余行()
  2.    Sheets("单科统计表").Select
  3.     Dim i As Integer
  4.     Dim iMaxRows As Integer
  5.     iMaxRows = Application.ActiveSheet.UsedRange.Rows.Count
  6.     For i = iMaxRows To 1 Step -1
  7.         If Cells(i, 1) = "" Then Rows(i).Delete
  8.     Next i
  9. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-8-16 17:32 | 显示全部楼层
我还是喜欢用FOR ... TO....NEXT比较好
遇到删除的时候把迭代的变量减少一个就可以了。

估计你这个问题出现在删除连续空行的时候。
删除了某个空行之后,下一行就移入这个空行原先所在的位置,然后在循环的过程中自动跳过了对这一行的判断。所以如果下一行也为空行的话就跳过了哦。
回复

使用道具 举报

发表于 2011-8-16 17:34 | 显示全部楼层
删除要用倒循环,不然有跳行现象。
回复

使用道具 举报

 楼主| 发表于 2011-8-16 17:34 | 显示全部楼层
回复 放浪形骸 的帖子

我是初学者,请帮忙修改。十分感激。
回复

使用道具 举报

发表于 2011-8-16 17:38 | 显示全部楼层    本楼为最佳答案   
  1. Sub 删除单科统计表多余行()
  2.    Sheets("单科统计表").Select
  3.     Dim i As Integer
  4.     Dim iMaxRows As Integer
  5.     iMaxRows = Application.ActiveSheet.UsedRange.Rows.Count
  6.     For i = iMaxRows To 1 Step -1
  7.         If Cells(i, 1) = "" Then Rows(i).Delete
  8.     Next i
  9. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-8-16 17:49 | 显示全部楼层
回复 放浪形骸 的帖子

辛苦了,谢谢您!
回复

使用道具 举报

发表于 2011-8-16 17:50 | 显示全部楼层
1091126096 发表于 2011-8-16 17:49
回复 放浪形骸 的帖子

辛苦了,谢谢您!

不客气,大家共同进步某
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-12 11:39 , Processed in 0.178582 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表