Excel精英培训网

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

[已解决]如何用VBA删除指定字段的行

[复制链接]
发表于 2017-1-12 21:05 | 显示全部楼层 |阅读模式
部门姓名费用
一部张力100保留
一部小陈200保留
一部小风111删除      
一部小风121删除      
一部小风132删除      
一部小风351删除      
一部张力100保留
二部小周161删除      
二部张力199删除      
一部小李212保留
如何把含有小风的行和二部的行删除

最佳答案
2017-1-13 15:06

Sub test()
    Dim A, i, j, s
    A = Range("a1").CurrentRegion
    s = 1

    For i = 2 To UBound(A)
        If A(i, 2) <> "小风" Then
            s = s + 1
            For j = 1 To UBound(A, 2)
                A(s, j) = A(i, j)
            Next j
        End If
    Next i

    If s > 1 Then
        Sheets(2).Select
        Range("a1").CurrentRegion = ""
        Range("a1").Resize(s, UBound(A, 2)) = A
    End If
End Sub
1.rar (9.02 KB, 下载次数: 5)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-1-12 22:06 | 显示全部楼层
录制宏:
1、筛选---选中行----删除
2、将要删除的关键字替换为=1/0,定位错误值-------删除行
3、利用辅助列,要保留的行填1,要删的行不填,排序,删除
……………………
回复

使用道具 举报

发表于 2017-1-13 08:56 | 显示全部楼层
回复

使用道具 举报

发表于 2017-1-13 10:02 | 显示全部楼层
Sub test()
    With [a:b]
        .Replace "二部", "", xlWhole
        .Replace "小风", "", xlWhole
        .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End With
End Sub
回复

使用道具 举报

 楼主| 发表于 2017-1-13 11:56 | 显示全部楼层
上清宫主 发表于 2017-1-12 22:06
录制宏:
1、筛选---选中行----删除
2、将要删除的关键字替换为=1/0,定位错误值-------删除行

十分感谢答复,现在开始学习VBA所以想看下VBA的代码
回复

使用道具 举报

 楼主| 发表于 2017-1-13 12:02 | 显示全部楼层

十分感谢答复,现在开始学习VBA所以想看下VBA的代码
回复

使用道具 举报

 楼主| 发表于 2017-1-13 12:08 | 显示全部楼层
xiangbaoan 发表于 2017-1-13 10:02
Sub test()
    With [a:b]
        .Replace "二部", "", xlWhole

非常感谢写这么多代码,还想继续请教,如果字段里面包含二部,比如说“华中区二部”,这样怎么办呢??
回复

使用道具 举报

发表于 2017-1-13 13:43 | 显示全部楼层
诺然偶然 发表于 2017-1-13 12:08
非常感谢写这么多代码,还想继续请教,如果字段里面包含二部,比如说“华中区二部”,这样怎么办呢??

        .Replace "*二部", "", xlWhole


回复

使用道具 举报

发表于 2017-1-13 15:06 | 显示全部楼层    本楼为最佳答案   

Sub test()
    Dim A, i, j, s
    A = Range("a1").CurrentRegion
    s = 1

    For i = 2 To UBound(A)
        If A(i, 2) <> "小风" Then
            s = s + 1
            For j = 1 To UBound(A, 2)
                A(s, j) = A(i, j)
            Next j
        End If
    Next i

    If s > 1 Then
        Sheets(2).Select
        Range("a1").CurrentRegion = ""
        Range("a1").Resize(s, UBound(A, 2)) = A
    End If
End Sub
1.rar (9.02 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2017-1-13 16:24 | 显示全部楼层
xiangbaoan 发表于 2017-1-13 13:43
.Replace "*二部", "", xlWhole

好的,非常感谢作答
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 02:55 , Processed in 0.382144 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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