title: Efficient way to delete entire row if cell doesn't contain '@'
body: <p>I'm creating a fast sub to do a validity check for emails.  I want to delete entire rows of contact data that do not contain a '@' in the 'E' Column.  I used the below macro, but it operates too slowly because Excel moves all the rows after deleting.</p>
  
  <p>I've tried another technique like this: <code>set rng = union(rng,c.EntireRow)</code>, and afterwards deleting the entire range, but I couldn't prevent error messages.</p>
  
  <p>I've also experimented with just adding each row to a selection, and after everything was selected (as in ctrl+select), subsequently deleting it, but I could not find the appropriate syntax for that.</p>
  
  <p>Any ideas?   </p>
  
  <pre><code>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 = True
  End Sub
  </code></pre>