엑셀 VBA #40 / 행 삭제_개선1 [VBA] - Union

엑셀 VBA #40 / 행 삭제_개선1 [VBA]

Sub 행삭제_union()

Dim r As Range      ' "A-1"값이 포함된 셀의 범위를 담을 변수(방)
Dim i As Long, lR As Long

lR = Cells(Rows.Count, "A").End(xlUp).Row

For i = 2 To lR
      If Cells(i, "A") = "A-1" Then
            If r Is Nothing Then
                  Set r = Cells(i, "A").Resize(, 2)  'r이 range타입이므로 set문으로!
            Else 'r방에 다른 값이 존재한다면
                  Set r = Union(r, Cells(i, "A").Resize(, 2))  
                  'r방에 r방의 기존 값과 
                  새로운 값(Cells(i, "A").Resize(, 2))을  r방에 넣어라
            End If
      End If
Next

If Not r Is Nothing Then r.Delete    '만약 r방에 값이 존재하면 r을 지워라.

End Sub

 


Union메서드를 사용하지 않았을 때는 for문을 통해 한 행씩 삭제> 한 행이 밀려 올라가는 문제 때문에
마지막행를 시작으로 루프를 돌도록 만들었습니다만,
Union 메서드는 조건을 만족하는 영역들을 모아서 한방에 지우므로 "For i = 2 To lR" 사용해도 ok

 

vba#40.xlsm
0.02MB



https://www.youtube.com/watch?v=6jKY3fr01h4&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=40

 


 

union함수 참조

https://raymond.tistory.com/2257

엑셀 VBA #50 / 중복데이터 처리_3 [VBA]

 

  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
TODAY TOTAL