Excel精英培训网

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

[VBA] 015-优化“删除空单元格所在行”-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-1-25 19:55 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难15
如何优化过程“删除空单元格所在行”
批量删除工作表中的空行是比较常见的操作,其代码如下,可以简化吗?

  1. Sub 删除空单元格所在行()
  2.   Dim i As Integer
  3.   Application.ScreenUpdating = False  '关掉屏幕刷新从而提速
  4.   For i = Cells(Rows.Count, 2).End(xlUp).Row To 2 Step -1         
  5.   '循环判断B列所有数据
  6.     If Len(Cells(i, 2)) = 0 Then Cells(i, 2).EntireRow.Delete         
  7.     '如果字符长度为0则整行删除
  8.   Next
  9.   Application.ScreenUpdating = True  '恢复屏幕更新
  10. End Sub
复制代码
è解决方案
利用定位法一步完成删除空单元格所在行。
í操作方法
步骤1
不采用循环方案,而用定位法,代码如下:

  1. Sub 删除空单元格所在行2()
  2.   On Error Resume Next  '防止不存在空单元格时出错
  3.   '定位B列的空单元格,然后整行删除
  4.   Range([b2], Cells(Rows.Count, 2).End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  5. End Sub
复制代码
步骤2
分别执行两段代码,均可实现B列空单元格整行删除的需求,但优化后的过程效率较高。

=============================
上摘自《EXCEL2010编程与实践》
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2011-1-25 19:56 | 显示全部楼层
妖言:

SO,要学好VBA之前,技巧的功底还是要打滴……
回复

使用道具 举报

发表于 2011-1-25 20:12 | 显示全部楼层
回复 小妖 的帖子

不过小妖老师,这个只是适合某些特定的情况。
比如说若列A和列B都有数据和空格,我们需要删除两列都是空格的情况下,好像就应该用循环了,定位好像。。我还没想到该怎么用。。
回复

使用道具 举报

发表于 2011-1-25 20:25 | 显示全部楼层
本帖最后由 杰 于 2011-1-25 20:26 编辑

楼上的这个两列的,还是用定位啊。
回复

使用道具 举报

发表于 2011-1-25 20:34 | 显示全部楼层
回复 的帖子

SpecialCells(xlCellTypeBlanks)
这个就是定位空格啊
回复

使用道具 举报

发表于 2011-4-9 21:27 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

发表于 2011-8-29 06:56 | 显示全部楼层
辛苦了,多谢分享!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 12:49 , Processed in 0.389563 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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