首页 > 解决方案 > 在Excel VBA中删除包含“xxx”的单元格(行)的优雅方法

问题描述

我有以下工作表:

在此处输入图像描述

我想删除城市列包含“美国”的行。前任。所需的输出如下:

在此处输入图像描述

我的方法是C2:C4使用=isnumber(search("USA",B2)). 然后

for i = lastrow to 2 step -1
    If cells(i, "C") then
    Else
        rows(i).delete
    end if
next

这种方法有效,但我觉得很愚蠢,在大型数据集上运行很慢。关于优雅地实现这一目标的任何想法?

标签: excelvba

解决方案


以下应该做你想要的 - 假设数据在 Sheet1 中的列AB.

Sub Del_USA()
Dim c As Range

With Sheet1.Range("B:B")
    Set c = .Find("*USA*", LookIn:=xlValues)
    If Not c Is Nothing Then
    
        With Sheet1.Cells(1, 1).CurrentRegion
            .AutoFilter 2, "*USA*", 7
            .Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete
            .AutoFilter
        End With
    
    Else
        MsgBox "USA Not Found"
    End If
End With

End Sub

推荐阅读