【VBA】Excel删除包含指定内容的行

提示:思路仅供参考,具体情况请具体对待


前言

特定场景:

工作中经常遇到一些软件导出的表格,其中的各级小计分布在不同的列,“小计”二字之间有的还加入了数量不等的空格,实际统计时这些小计行在其中非常碍事,于是得想个办法快速删掉它。


提示:删除内容有风险,请谨慎测试

一、思路

如果用循环逐单元格取值判断是否包含某字符,速度会非常慢,只有在没有其他办法可想的时候才用这种办法。
快速定位的方法很多,但最快的应该还是Excel自带的方法:
Range.SpecialCells()可以非常快速的定位目标单元格
Range.SpecialCells(xlCellTypeFormulas, 16)可以快速定位出错单元格
其中xlCellTypeFormulas是公式,16是错误
如果我给这些需要定位的单元格,赋予一个错误的公式,比如“=1/0”,则会返回“#DIV/0!”的错误提示。
然后来定位这些错误单元格,一次性删除掉。
但是如果表格里真的有这些错误提示,而又需要保留,则会存在误删。
考虑了一下,用常量来表示,就更合适了。
Range.SpecialCells(xlCellTypeConstants, 16)
其中xlCellTypeConstants是常量,16是错误
当单元格出现错误文本就可以快速定位了。
而我们多半不会在单元格里手动去输入一个#DIV/0!或者#NAME?吧?

二、写代码

Sub 删除_包含指定内容的行()
    On Error Resume Next
    h = InputBox("请输入包含的内容(支持通配符)", "开水瓶里游泳提醒您", "小*计")
    If h = "" Then Exit Sub
    Cells.Replace What:=h, Replacement:="#NAME?", Lookat:=xlWhole
    Cells.SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
End Sub

总结

先将符合条件的文本替换为错误提示文本,然后利用错误提示快速定位删除。
解决问题的方法有很多,而循环是效率最低的,利用软件内置的一些定位功能,可以让代码提速不少。

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值