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 關注
- 739 瀏覽
相關問題推薦
添加回答
舉報