2015-07-20 62 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