use*_*838 2 excel vba excel-vba
有人请帮忙.我正在尝试编写一个VBA代码,在我的Excel工作表列"D"中搜索特定单词"DR",然后删除整行.工作表中出现了大量特定单词.我想要做的就是搜索这些事件,然后删除包含这些单词的整个行.我的问题是我不确定要使用什么循环结构.下面是我正在使用的代码.
Columns("D:D").Select
Cells.Find(What:="DR", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Do
Cells.Find(What:="DR", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
ActiveCell.EntireRow.Delete
Loop While (Cells.Find(What:="DR"))
Run Code Online (Sandbox Code Playgroud)
我很乐意提供帮助.
另一种方式(最快的方式)
假设您的工作表看起来像这样

您可以使用Excel执行脏工作;)使用 .AutoFilter
看到这段代码
Sub Sample()
Dim ws As Worksheet
Dim lRow As Long
Dim strSearch As String
'~~> Set this to the relevant worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
'~~> Search Text
strSearch = "DR"
With ws
'~~> Remove any filters
.AutoFilterMode = False
lRow = .Range("D" & .Rows.Count).End(xlUp).Row
With .Range("D1:D" & lRow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
'~~> Remove any filters
.AutoFilterMode = False
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
输出:
