Excel精英培训网

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

[已解决]将工作表内含有"测试"的行删除

[复制链接]
发表于 2016-8-18 11:18 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2016-8-18 11:29 编辑

Sub a()
Dim a%, b&
For b = 1 To [a65536].End(3).Row
    For a = 1 To 7
    Cells(b, a).Select
        If Cells(b, a) = "测试" Then
        Rows(b).Delete
        End If
    Next
Next
End Sub


这代码,数据一多就卡死,很慢很慢
怎么办呀?
最佳答案
2016-8-18 11:41
  1. Sub test()
  2.     With Range([a1], "g" & [a1].End(4).Row)
  3.         .Replace what:="测试", replacement:="=1/0", lookat:=xlWhole, _
  4.             searchorder:=xlByRows, MatchCase:=False, searchformat:=False, _
  5.             ReplaceFormat:=False
  6.         .SpecialCells(xlCellTypeFormulas, 16).Select
  7.     End With
  8.     selection.EntireRow.Delete
  9. End Sub
复制代码
试试这段代码
发表于 2016-8-18 11:26 | 显示全部楼层
我的也是呢,求好方法啊!就删除几行数据,要个1o多分钟
回复

使用道具 举报

发表于 2016-8-18 11:29 | 显示全部楼层
本帖最后由 徐淑颖 于 2016-8-18 11:33 编辑

  N = sh.Range("A65536").End(xlUp).Row
             For M = N To 2 Step -1   
                If sh.Cells(M, 1) <> Left(f, 2) Then                  
                   sh.Rows(M).Delete
                 End If
              Next

大婶们有没啥优化的方法啊
回复

使用道具 举报

发表于 2016-8-18 11:41 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     With Range([a1], "g" & [a1].End(4).Row)
  3.         .Replace what:="测试", replacement:="=1/0", lookat:=xlWhole, _
  4.             searchorder:=xlByRows, MatchCase:=False, searchformat:=False, _
  5.             ReplaceFormat:=False
  6.         .SpecialCells(xlCellTypeFormulas, 16).Select
  7.     End With
  8.     selection.EntireRow.Delete
  9. End Sub
复制代码
试试这段代码

评分

参与人数 1 +1 收起 理由
xjl565135022 + 1 很给力

查看全部评分

回复

使用道具 举报

发表于 2016-8-18 11:44 | 显示全部楼层
徐淑颖 发表于 2016-8-18 11:29
N = sh.Range("A65536").End(xlUp).Row
             For M = N To 2 Step -1   
                If s ...

匹配一行,删除一行肯定慢,先全部找出来,最后一次删除应该就好多了
回复

使用道具 举报

发表于 2016-8-18 11:55 | 显示全部楼层
前后加一句application.screenupdating =false 和 application.screenupdating =true 要好点,另外就是删行要从下往上删~
回复

使用道具 举报

发表于 2016-8-18 12:07 | 显示全部楼层
选中整表,
查找  "测试"   (选项>单元格匹配)

在列表中 (第一个默认是选中的 按shift再选中最后一个) 全部选中,
关闭查找对话框

右键,删除>整行
回复

使用道具 举报

 楼主| 发表于 2016-8-18 16:50 | 显示全部楼层
这儿有肥猫 发表于 2016-8-18 11:55
前后加一句application.screenupdating =false 和 application.screenupdating =true 要好点,另外就是删行 ...

删除行是要从下往上删 ,不然会漏掉,谢谢提醒哈
回复

使用道具 举报

 楼主| 发表于 2016-8-18 17:03 | 显示全部楼层
砂海 发表于 2016-8-18 12:07
选中整表,
查找  "测试"   (选项>单元格匹配)

这个方法不行,先中只能选中单元格,而且全部选中之后右键选删除的话,只能选到一个,还没有删除行这个选项。

回复

使用道具 举报

 楼主| 发表于 2016-8-18 17:06 | 显示全部楼层
望帝春心 发表于 2016-8-18 11:41
试试这段代码

非常感谢,速度非常快,要的就是这个效果。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 20:06 , Processed in 0.467692 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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