excel - 在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
这种方法有效,但我觉得很愚蠢,在大型数据集上运行很慢。关于优雅地实现这一目标的任何想法?
解决方案
以下应该做你想要的 - 假设数据在 Sheet1 中的列A
和B
.
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
推荐阅读
- algorithm - 在 OpenCL 1.2 上实现堆栈推送的正确方法是什么?
- sql - 将 SQL 二进制内容转换为文件
- mockserver - 独立的 MockServer:我在哪里实现期望?
- javascript - 将文本与反应组件混合
- excel - 将范围传输到动态数组会导致运行时错误 1004
- php - 将if语句添加到wordpress中的php类中
- css - 如何改变原色?
- javascript - 在 html 和 javascript 中使用 cloudinary 设置 tinymce
- json - 从输出中隐藏 time_out、_shards、max_score 和其他默认字段
- python - 使用 pip 删除 setup.py data_files 中的文件