ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 彭希仁

[讨论]如何"高效"的删除空白行

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-12 11:14 | 显示全部楼层
Sub bb()
    t1 = Timer
    Application.ScreenUpdating = False
    lng = ActiveSheet.UsedRange.Rows.Count
    lng2 = ActiveSheet.UsedRange.Columns.Count
    ReDim arr(1 To lng, 1 To 1)
    rng = Cells(1, 1).Resize(lng, lng2)
    For i = 1 To lng
        For j = 1 To lng2
            If rng(i, j) <> "" Then
                arr(i, 1) = i
                Exit For
            End If
        Next
    Next
    Cells(1, lng2 + 1).Resize(lng, 1) = arr
    Cells(1, 1).Resize(lng, lng2 + 1).Sort Key1:=Cells(1, lng2 + 1), Order1:=xlAscending
    Cells(1, lng2 + 1).Resize(lng, 1) = ""
    Application.ScreenUpdating = True
    MsgBox Timer - t1
End Sub

TA的精华主题

TA的得分主题

发表于 2008-5-12 11:15 | 显示全部楼层
QUOTE:
以下是引用lj1226189在2008-5-12 10:28:51的发言:
估计30秒完成也是不可能的!

30秒?

我测试0.8秒钟完成,请看37楼。

60000行(或者不定列不定列)中删除空行

[此贴子已经被作者于2008-5-12 13:27:40编辑过]

[讨论]如何"高效"的删除空白行

[讨论]如何"高效"的删除空白行

2mvvxN5Z.rar

209.05 KB, 下载次数: 11589

[讨论]如何"高效"的删除空白行

RNVy4Qka.rar

207.55 KB, 下载次数: 40

[讨论]如何"高效"的删除空白行

TA的精华主题

TA的得分主题

发表于 2008-5-12 12:01 | 显示全部楼层

回32,33楼,

UseRange.cells(1,1).Address 不一定是 $A$1 吧?

另外未测试AutoFilter等特殊情况是否有影响。

[此贴子已经被作者于2008-5-12 12:03:50编辑过]

TA的精华主题

TA的得分主题

发表于 2008-5-12 12:42 | 显示全部楼层

请彭版主帮忙看看,执行代码后,附件中的空行怎么没能被删除,谢谢!

XxUhVNKc.rar (7.59 KB, 下载次数: 12)


[此贴子已经被作者于2008-5-12 12:47:15编辑过]

dNnvFvfW.rar

7.59 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2008-5-12 12:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用彭希仁在2008-5-12 10:23:29的发言:

罗兄,你有两个马甲?

一个都没有

TA的精华主题

TA的得分主题

发表于 2008-5-12 12:53 | 显示全部楼层
QUOTE:
以下是引用weide_yang在2008-5-12 12:42:35的发言:

请彭版主帮忙看看,执行代码后,附件中的空行怎么没能被删除,谢谢!

64HyMWX2.rar (145.78 KB, 下载次数: 34)


[此贴子已经被作者于2008-5-12 13:26:35编辑过]

TA的精华主题

TA的得分主题

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

回37楼,

起始行:ActiveSheet.UsedRange.Cells(1.1).Row

结束行:ActiveSheet.UsedRange.Cells(1.1).Row - 1 + ActiveSheet.UsedRange.Rows.Count

起始列与结束列也相类似;(若数据列到了256,代码很可能就出错了)

另外AutoFilter及Hidden等特殊情况是否需要考虑?

[此贴子已经被作者于2008-5-12 14:36:57编辑过]

TA的精华主题

TA的得分主题

发表于 2008-5-12 14:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用masher在2008-5-12 14:21:47的发言:

回37楼,

起始行:ActiveSheet.UsedRange.Cells(1.1).Row

结束行:ActiveSheet.UsedRange.Cells(1.1).Row - 1 + ActiveSheet.UsedRange.Rows.Count

起始列与结束列也相类似;(若数据列到了256,代码很可能就出错了)

另外AutoFilter及Hidden等特殊情况是否需要考虑?


1.起始行:ActiveSheet.UsedRange.Cells(1.1).Row-------这种用法是画蛇添脚哦。Cells(1.1)根本不需要

2.结束行:ActiveSheet.UsedRange.Cells(1.1).Row - 1 + ActiveSheet.UsedRange.Rows.Count------同样是画蛇添脚

3.若数据列到了256-----实际工作表,是否有人用了256列?

4.Hidden状态的行可以忽略。

TA的精华主题

TA的得分主题

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

顶级大侠,好功夫。努力学习。

TA的精华主题

TA的得分主题

发表于 2008-5-12 14:45 | 显示全部楼层
QUOTE:
以下是引用andysky在2008-5-12 12:53:37的发言:

这是因你的代码不通用.这个代码需要在A1单元格输入数据后才能正常执行

给你一个通用的代码.

6万行只需要1秒钟完成 



[em17][em17]

通用性和速度稳居第一

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

本版积分规则

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

GMT+8, 2024-11-19 17:41 , Processed in 0.036728 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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