ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 169|回复: 10

[求助] 删除多余空行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-26 00:13 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
附件带有2表,均使用行占满,一表使用去除空行代码就能清除空行,另一表却不能,不知道什么原因,特此求助

删除空白行失败.zip

1.78 MB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-5-26 06:47 | 显示全部楼层
endrow已经是表已使用的最后一行,你还要去删除大于endrow的行,没必要吧。

TA的精华主题

TA的得分主题

发表于 2024-5-26 06:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你删除空行,应该是删除非空行至endrow之间的行吧。

TA的精华主题

TA的得分主题

发表于 2024-5-26 08:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
'删除指定的单元格为空的行
    For i = rows To 3 Step -1
        If  Cells(i, cols).Value = "" Then
            Sheets(stName).rows(i).Delete
        End If
    Next i

自己修改对应变量应该就可以了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-26 10:37 | 显示全部楼层
ykcbf1100 发表于 2024-5-26 06:47
endrow已经是表已使用的最后一行,你还要去删除大于endrow的行,没必要吧。

endrow是已使用的行数,程序的目的就是删除使用行后面的空行,因为这个表和正常表不一样,他占用了所有的行。
如果用UsedRange.Rows.Count 看表使用总行数,他就是1048576,而不是endrow已使用的行数。
另:剔除已使用行中的空行就用下面代码了
        For i = ws.UsedRange.Rows.Count To 1 Step -1
            If WorksheetFunction.CountA(Rows(i)) = 0 Then
                Rows(i).Delete
            End If
        Next i

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-26 10:41 | 显示全部楼层
wcj6376tcp 发表于 2024-5-26 08:03
'删除指定的单元格为空的行
    For i = rows To 3 Step -1
        If  Cells(i, cols).Value = "" The ...

使用目的不一样,你的是删除已使用行中的空行,而我需求的是剔除已使用行以外的空行。
正常情况下一般不会出现这种情况,UsedRange.Rows.Count出来的使用行数是1048576,所以需要恢复正常使用行数

TA的精华主题

TA的得分主题

发表于 2024-5-26 11:06 | 显示全部楼层
sqgz 发表于 2024-5-26 10:41
使用目的不一样,你的是删除已使用行中的空行,而我需求的是剔除已使用行以外的空行。
正常情况下一般不 ...

确实存在这个问题,实在不行就把前面要保留的行数复制到一个新Sheet上吧

TA的精华主题

TA的得分主题

发表于 2024-5-26 11:16 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-26 12:56 | 显示全部楼层
感谢楼上的参与,题意都理解错误了。
删除页面空行,有两种情况,一种就是已使用行中寻找空行并删除,使用下面代码倒推就行,唯一问题是行数越多越慢。

        For i = ws.UsedRange.Rows.Count To 1 Step -1
            ' 使用WorksheetFunction.CountA函数检查当前行的所有单元格是否都为空
            ' 如果CountA的返回值为0,则表示该行所有单元格都是空的
            If WorksheetFunction.CountA(Rows(i)) = 0 Then
                ' 如果当前行为空,则删除该行
                Rows(i).Delete
            End If
        Next i
第2种情况就是我提问的情况,页面已使用行比如2000行,而UsedRange.Rows.Count出来行数是页面最高行数,所以需要清理掉多余空行。附件中去空行成功页面使用程序就能清理成功,而去空行失败页面却不能,分辨不出两页区别,所以才提问求助。
又研究了一下,成功页面之所以使用行占满,是因为有一列整列画了框,把框列去除,保存重开不用去空行就能恢复正常行数。
而失败也删除所有列数据还是使用行占满,不知道原因在哪里。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-26 13:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

好吧,看样子无解了,失败页面我把内容全部删除,保存后重开还是占满。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-17 16:51 , Processed in 0.037146 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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