macros删除除包含某些文本的行之外的所有行

我试图写一个macros,将删除每一行,除了那些包含一些特定的文字。

我需要有以下标准:

  • 永远不要删除前两行
  • 排除可以在C或D列中find单词“Somme”的行

请注意,Somme这个单词是C或D列中string的一部分。find的文本的例子如下所示:

索姆河阿尔法/ 000284727819293

到目前为止,我所使用的代码是用Somme删除行,但是我需要相反的代码:

Sub CleanUp() Dim c As Range Dim SrchRng Set SrchRng = ActiveSheet.Range("D3", ActiveSheet.Range("D65536").End(xlUp)) Do Set c = SrchRng.Find("Somme", LookIn:=xlValues) If Not c Is Nothing Then c.EntireRow.Delete Loop While Not c Is Nothing End Sub 

给这个镜头:

 Sub SaveSomeRows() Dim N As Long, L As Long, r As Range Dim s As String, v As String Set r = ActiveSheet.Range("D3", ActiveSheet.Range("D65536").End(xlUp)) N = r.Count s = "somme" For L = N To 1 Step -1 v = LCase(r(L).Value) If InStr(1, v, s) = 0 Then r(L).EntireRow.Delete End If Next L End Sub 

编辑#1

macros的初始版本忽略列C …..试试这个:

 Sub SaveSomeRows() Dim N As Long, L As Long, r As Range Dim s As String, v As String Set r = ActiveSheet.Range("D3", ActiveSheet.Range("D65536").End(xlUp)) N = r.Count s = "somme" For L = N To 1 Step -1 v = LCase(r(L).Value & r(L).Offset(-1, 0).Value) MsgBox v If InStr(1, v, s) = 0 Then r(L).EntireRow.Delete End If Next L End Sub