添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

特定场景:

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

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

如果用循环逐单元格取值判断是否包含某字符,速度会非常慢,只有在没有其他办法可想的时候才用这种办法。
快速定位的方法很多,但最快的应该还是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,删除工作表所有空;2,删除工作表所有空列;3,删除选中单列包含指定字符的;4,删除选中单列不含指定字符的;5,删除选中列重复的整;6,删除选中列唯一的整 今天我们来聊一下关于删除满足条件的的问题!问题说明:金额列中如何是0、空白或者赠送。是没有赚到钱的销售,现在需要统计,要求删除这些无效数据!本次我们采用思路递进的方式来处理这个问题,从小白到推荐的处理方式!思路1 |传统的逐个筛选,然后删除!解析说明:1、此方式属于比较小白和传统的方式,筛选,从下拉框中找到所有要删除的,勾上,然后右击->【删除】,不推荐2、如果你在使用200... expression.Delete(Shift) 表达式 必需。该表达式返回上述对象之一。Shift XlDeleteShiftDirection 类型,可选。仅用于 Range 对象。指定如何移动单元格来代替删除的单元格。 XlDeleteShiftDi.. 比如删除A列单元格是5的B1输入=INDEX(A:A,SMALL(IF($A$1:$A$10<>5,ROW($1:$10),100),ROW(A1)))&""数组公式,先按住CTRL+SHIFT,最后回车公式下拉复制B列>右键>选择性粘贴>数值删除A列,OK.... 一、背景及需求:上一期介绍的由多个excel合成的Excel表如下所示,我们需要把有汉字的删除掉。 二、解决方案:同样的还是要用VBA来解决,操作前面已经介绍过了,我们直接上代码和注释(!!!在这里需要强调一下:在运代码前要选中需要删除的部分,比如A-F——1-2000,上下左后都要选,不能全选。由于程序会对选中的每个单元格进索引,如果直接Ctrl+A全选或者只选择上下或者左右的话,程序会由于一直进excel单元格的索引而进入无限索引,最终导致电脑卡死!!!): Sub wrj() Dim rng 要使用VBA,首先打开你的Excel电子表格,然后将Microsoft Visual Basic窗口打开,这样才能使用VBA代码!   方法是:在Excel中直接按下组合键Alt F11即可打开VB窗口,倘若VB默认没有打开代码窗口,请执操作:“视图”→“代码窗口”即可!   好了,环境都设置好了,下面来学习如题所示的操作吧!   代码1#8212;删除第8个单元格为空的,范围从1... Arr = [A1].CurrentRegion Application.ScreenUpdating = False For k = UBound(Arr) To 1 Step -1 If InStr(Arr(k,7),"要删除内容" Then Ro...