Excel精英培训网

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

[已解决]如何用VBA删除指定列中指定内容所在的行

[复制链接]
发表于 2011-12-29 09:28 | 显示全部楼层 |阅读模式
删除D列为空的行,L列为0的行,U列为0的行.
最佳答案
2011-12-29 09:45
Sub test()
    Set t = Rows(65536)
    For r = 1 To ActiveSheet.UsedRange.Rows.Count
        If Cells(r, 4) = "" Or Cells(r, 12).Text = 0 Or Cells(r, 21).Text = 0 Then Set t = Application.Union(t, Rows(r))
    Next
    t.Delete
End Sub

ps:空单元格的value=0,所以要用text来判断
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-12-29 09:39 | 显示全部楼层
代码执行前,切记保存文件,或者另存文本备份。因为VBA删除操作是不可逆的。

  1. Sub Macro1()'
  2.     row1 = Range("a65536").End(xlUp).Row
  3.     For I = row1 To 1 Step -1
  4.         If Range("D" & I) = "" And Range("L" & I) = 0 And Range("U" & I) = 0  Then
  5.             Range("D" & I).EntireRow.Delete
  6.         End If
  7.     Next I
  8. End Sub

复制代码


因为没有看到源数据,可能上面的代码会删除有用的数据,建议增加一个条件A列不为空


  1. Sub Macro2()
  2.     row1 = Range("a65536").End(xlUp).Row
  3.     For I = row1 To 1 Step -1
  4.         If Range("D" & I) = "" And Range("L" & I) = 0 And Range("U" & I) = 0 And Range("A" & I) <> "" Then
  5.             Range("D" & I).EntireRow.Delete
  6.         End If
  7.     Next I
  8. End Sub

复制代码

回复

使用道具 举报

发表于 2011-12-29 09:45 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Set t = Rows(65536)
    For r = 1 To ActiveSheet.UsedRange.Rows.Count
        If Cells(r, 4) = "" Or Cells(r, 12).Text = 0 Or Cells(r, 21).Text = 0 Then Set t = Application.Union(t, Rows(r))
    Next
    t.Delete
End Sub

ps:空单元格的value=0,所以要用text来判断
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 14:42 , Processed in 0.223056 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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