VBA – 在列中查找多个string,然后删除行

下面的VBA代码很好,但是我想添加更多的string来删除

如酒店,家庭,平等等,最多50个值

编辑 – 位于C列的值

我已经看过数组,但仍然找不到解决scheme

Dim Find As Range Application.ScreenUpdating = False Set Find = .Range("C:C").Find(what:="House") Do Until Find Is Nothing Find.EntireRow.Delete Set Find = .Range("C:C").FindNext Loop 

删除循环中的行可能会减慢你的代码。 将它们存储在一个临时范围内,然后一次删除它。 还要将所有要查找的单词存储在数组中,然后循环执行search。

试试这个(未经testing)。

 Sub Sample() Dim sString As String Dim MyAr Dim i As Long Dim delRange As Range, aCell As Range Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") '~~> Add more to the list here separated by "/" sString = "Hotel/Home/Flat" MyAr = Split(sString, "/") With ws For i = LBound(MyAr) To UBound(MyAr) Set aCell = .Columns(3).Find(What:=MyAr(i), LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not aCell Is Nothing Then If delRange Is Nothing Then Set delRange = .Rows(aCell.Row) Else Set delRange = Union(delRange, .Rows(aCell.Row)) End If End If Next i End With If Not delange Is Nothing Then delRange.Delete End Sub 

上面的例子是只search一个词。 如果你想find重复,然后使用Findnext

寻找替代品

对上面的数组使用Autofilter。 看到这个链接。 这会给你一个开始。