亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果單元格不包含“ @”,則刪除整個行的有效方法

如果單元格不包含“ @”,則刪除整個行的有效方法

慕沐林林 2019-12-04 15:14:44
我正在創建一個快速子來對電子郵件進行有效性檢查。我想刪除“ E”列中不包含“ @”的聯系人數據的整行。我使用了下面的宏,但是它操作太慢,因為刪除后Excel移動了所有行。我嘗試了另一set rng = union(rng,c.EntireRow)種類似的技術:,然后刪除了整個范圍,但是我無法防止出現錯誤消息。我還嘗試過僅將每一行添加到選擇中,并且在選擇所有內容后(如ctrl + select中一樣),隨后將其刪除,但是我找不到適合的語法。有任何想法嗎?Sub Deleteit()    Application.ScreenUpdating = False    Dim pos As Integer    Dim c As Range    For Each c In Range("E:E")        pos = InStr(c.Value, "@")        If pos = 0 Then            c.EntireRow.Delete        End If    Next    Application.ScreenUpdating = TrueEnd Sub
查看完整描述

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。


查看完整回答
反對 回復 2019-12-04
  • 3 回答
  • 0 關注
  • 739 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號