如何在Excel中使用VBA搜索单词,然后删除整行?

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)

我很乐意提供帮助.

Sid*_*out 6

另一种方式(最快的方式)

假设您的工作表看起来像这样

在此输入图像描述

您可以使用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)

输出:

在此输入图像描述

  • @t.thielemans:2个理由.`1`你没有循环并删除循环中的行`2`如果存在大量数据,则自动过滤比循环更快.尝试一下并使用计时器来计时:) (2认同)