2016-05-31 2 views
1

허용 목록과 일치하는 매크로를 작성한 다음 허용 목록에없는 모든 항목을 삭제하고 싶습니다. 나는 다음과 같은 코드가 있습니다VBA 허용 목록 - 허용 목록과 일치하고 특정 범위 삭제

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

희망 누군가가 나에게

인사말

을 도울 수

답변

0

이 줄을 변경해보십시오이

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

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

이것은 단지 당신이 정의하는 범위 내에서 그 특정 세포를 삭제하고 그 범위까지 아래 세포의 전체 블록을 이동 허용 할 Shift:=xlUp를 사용 columns A와 B

의 셀을 삭제합니다.