我想创建一个与白名单匹配的宏,然后删除白名单上没有的所有内容。我有以下代码:
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行)。重要的是“重要数据”也不会被删除。以下是宏应该如何工作的示例:
希望有人可以帮助我
问候
答案 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
将允许您删除您定义的范围内的特定单元格,并移动该范围内的整个单元格块。