3 回答
TA贡献1821条经验 获得超6个赞
您不需要循环即可执行此操作。自动过滤器效率更高。(类似于SQL中的cursor vs. where子句)
自动过滤所有不包含“ @”的行,然后将其删除,如下所示:
Sub KeepOnlyAtSymbolRows()
Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long
Set ws = ActiveWorkbook.Sheets("Sheet1")
lastRow = ws.Range("E" & ws.Rows.Count).End(xlUp).Row
Set rng = ws.Range("E1:E" & lastRow)
' filter and delete all but header row
With rng
.AutoFilter Field:=1, Criteria1:="<>*@*"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
' turn off the filters
ws.AutoFilterMode = False
End Sub
笔记:
.Offset(1,0) 阻止我们删除标题行
.SpecialCells(xlCellTypeVisible) 指定在应用自动过滤器后剩余的行
.EntireRow.Delete 删除标题行以外的所有可见行
逐步执行代码,您可以看到每一行的功能。在VBA编辑器中使用F8。
- 3 回答
- 0 关注
- 705 浏览
相关问题推荐
添加回答
举报