VBA白名单 - 与白名单匹配,然后删除特定范围

时间:2016-05-31 11:45:47

标签: vba excel-vba excel

我想创建一个与白名单匹配的宏,然后删除白名单上没有的所有内容。我有以下代码:

Sub WHITELIST()

Dim LR As Long, i As Long
With Sheets("Sheet1")
LR = .Range("A" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
If IsError(Application.Match(.Range("A" & i).Value, Sheets("Whitelist").Columns("A"), 0)) Then .Rows(i).Delete
Next i
End With
End Sub

但我的代码会删除整行。我只想删除范围A:B并向上移动单元格(行大小是可变的,所以我总是要检查直到最后一行 - 最多40,000行)。重要的是“重要数据”也不会被删除。以下是宏应该如何工作的示例:

enter image description here

希望有人可以帮助我

问候

1 个答案:

答案 0 :(得分:0)

尝试更改此行

 If IsError(Application.Match(.Range("A" & i).Value, Sheets("Whitelist").Columns("A"), 0)) _
 Then .Rows(i).Delete

到这个

    If IsError(Application.Match(.Range("A" & i).Value, Sheets("Whitelist").Columns("A"), 0)) _
 Then .Range("A" & i & ":B" & i).Delete Shift:=xlUp

这只会删除columns A和B中的单元格。

使用Shift:=xlUp将允许您删除您定义的范围内的特定单元格,并移动该范围内的整个单元格块。