2015-07-20 45 views
0

我需要小小的幫助,在我的表中進行「清理」 - 我有大約10 000行,但我只需要在D列中包含特定文本的行。我有這個「標準」表,但不知道如何使用它。標準意味着我可以在D列中找到17個特定單詞。你能幫我解決這個問題嗎?我認爲VBA將是必然的。也是必然留在D列的原始文本(對於下一個VBA,我使用:))MS Excel - 刪除值不在「標準」表中的行

+0

過濾器應該這樣做 – Poof

+0

一些示例數據可能有幫助嗎?輸入/預期輸出/ crtieria去除?你也嘗試過什麼嗎? – 99moorem

+0

filtr是不好的主意,因爲有很多行和列與特定的文本,我想要更自動的東西...我嘗試使用「高級過濾器」和數據透視表,但一切只是爲了表明......我需要「乾淨」,而不是使用乾淨的桌子爲下一個VBA ... – Tereza

回答

0

這裏是一些簡單的代碼,將檢查列A:值爲AAA,BBB,CCC,DDD或空行和刪除行沒有他們。

Sub CleanTheMess() 
Dim su As Boolean, cm As XlCalculation 
Dim r As Long, v(), r_offset As Long 

su = Application.ScreenUpdating 
Application.ScreenUpdating = False 'Disable screen updating 
cm = Application.Calculation 
Application.Calculation = xlCalculationManual 'Disable automatic calculation 

'Only use used values 
With Intersect(Range("A:A"), Range("A:A").Worksheet.UsedRange) 
    v = .Value 'Assign values to array 
    r_offset = .Row - LBound(v) 'Mapping between array first index and worksheet row number 
End With 

'Check all row from bottom (so don't need to deal with row number changes after deletion) 
For r = UBound(v) To LBound(v) Step -1 
    Select Case v(r, 1) 
    Case "AAA", "BBB", "CCC", "DDD", Empty 'Do nothing 
    Case Else 
     Sheet4.Rows(r + r_offset).EntireRow.Delete 
    End Select 
Next 
Application.ScreenUpdating = su 'Restore screen updating 
Application.Calculation = cm 'Restore calculation mode 
End Sub 

這是在我的stackMacrofolder,所以如果你看起來夠深,你將能夠找到原始代碼的地方。

+0

是的!小改正後工作:)謝謝 – Tereza