2013-10-25 93 views
3

我試圖編寫一個宏,它將刪除除包含某些特定文本的行之外的每一行。宏刪除除包含某些文本的行以外的所有行

我需要有以下條件:

  • 從不刪除第一2行
  • 排除其中單詞「索姆」可以在列C中發現的行或D.

請注意,單詞Somme如果列C或D中的字符串的一部分。發現的文本的示例將類似於:

S OMME阿爾法/ 000284727819293

什麼我到目前爲止是代碼,刪除與它索姆行,但我需要的正好相反:

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 
+1

爲什麼不使用自動過濾器? http://stackoverflow.com/questions/11631363/how-to-copy-a-line-in-excel-using-a-specific-word-and-pasting-to-another-excel-s –

+0

我需要刪除從頁面的內容而不是過濾出來,由於其他的東西我在做 – Xeo

+0

試試看。我已經準備好了代碼,並向你保證Autofilter工作:) –

回答

1

這給一個鏡頭:

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

宏的初始版本忽略列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 
+0

似乎沒有工作。它刪除了每行,但其中1個 – Xeo

+0

爲我工作(第一個例子)。謝謝。 – bawpie

相關問題