Lost Information!

엑셀 VBA 기초 - union과 intersect 합집합과 교집합 활용하기 - 2편 본문

개인브랜드블로그를 만들어 보자/엑셀VBA

엑셀 VBA 기초 - union과 intersect 합집합과 교집합 활용하기 - 2편

Lostinformation 2020. 11. 18. 20:46

모두가 칼퇴하는 그날까지~

 

지난 글에서는 

엑셀 데이터를 보고

합집합에 대해 

알려드렸는데요.

 

만일 저번 내용을 모르시거나

기억이 나질 않으신다면

밑에 글을 참고해주세요.

red-s.tistory.com/2445

 

엑셀 VBA 기초 - union과 intersect 합집합과 교집합 활용하기 - 1편

모두가 칼퇴하는 그날까지~ 지난 글에서는 엑셀 데이터의 중복된 데이터를 제거하는 방법을 알려드렸는데요. 만일 저번 내용을 모르시거나 기억이 나질 않으신다면 밑에 글을 참고해주세요.

red-s.tistory.com


이번 글에서도 집합에 대해

이어서 진행하겠습니다.

 

저번 글에서는 그대로 

union을 활용하여 

남성의 데이터만 

추출하여 삭제하였는데요.

 

이번에는 해당 데이터를

복사해서 옆으로 

붙여 넣는 형식을 

보여드리겠습니다.

 

위와 같은 표가 있다고

가정할게요.

 

그래서 왼쪽 데이터에서 

여성 데이터만 추출하고

왼쪽 데이터는 그대로 두고

오른쪽에다 붙여 넣는 

방법인 거죠.

 

그럼 일단 

ALT + F11을 눌러주세요.

 

일단 저번 데이터 표와

동일한 시트에 연습하실 분들은

첫 번째 사진처럼 표를

왼쪽, 오른쪽 준비해주시면 되고

 

만일 다른 시트에 연습하실 분들은

위의 매크로를 삽입에 모듈 추가

또 해주셔서 복사 붙여 넣기 

해주시면 됩니다.

 

그다음 수정하는 것이 

새로 적는 것보다 빠르니까요

 

 

그다음 이렇게 

작성해주시면 되는데요.

 

저번 글에서 달라진 부분만

설명해드리겠습니다.

 

For i = 7 To lngE

7부터 마지막행까지

반복 작업하면 되는데


If Range("G" & i) = "여" Then

만약 G값이 "여"라면

( 저번 글에서는 남자만 추출하여

삭제했지만 이번에는 여자만

추출하여 붙여 넣어야 하기에 )


If rngD Is Nothing Then

rngD값이 지정되어

있지 않다면


Set rngD = Range("G" & i). Offset(0, -1). Resize(1, 7)

rngD는 G값의

왼쪽으로 한 칸 이동하여

1행 7열까지야

("여"라는 데이터만이 아니고

해당 행전체를 복사해야 하기에

OFFSET과 RESIZE를 활용하여

추출하여야 합니다)

 

Else

아니라면
        
Set rngD = Union(rngD, Range("G" & i). Offset(0, -1). Resize(1, 7))

rngD는 기존의 추출한 값과 

새로 나온 데이터 값을

합쳐서 다시 구성해

(물론 여기서도 다시

offset과 Resize를 적어주어야

정상 작동됩니다) 

 

End If

End If

 

If rngD Is Nothing Then

MsgBox "복사할 범위가 없어요"

rngD의 값이 없다면

복사할 범위가 없다는

메시지 박스를 띄우고

 

Else

rngD.Copy Range("o7")

그게 아니라면

rngD의 값을 O7에

복사해서 붙여 넣어주세요

 

End If

 

이렇게 하고 실행하면

 

 

이렇게 추출돼서 

오른쪽으로 복사되는 거죠.

 

하지만 여기서 문제가 있는데요.

 

바로 이렇게 표시된 부분처럼

데이터의 값이 변경되면

정상 작동하지 않는다는 거죠.

 

그래서 오른쪽 데이터를 

초기화해주어야 하는데요.

 

다시 ALT + F11 눌러주시고요.

 

표시된 부분만 추가해주시면

제대로 작동할 텐데요.

 

Range("O6"). CurrentRegion.Offset(1, 0). Clear

O6부터 데이터가 있는

표 전체를 선택하는데

기준점을 아래로 한 칸

내려서 삭제해

 

이렇게 다시 한번 

Offset을 활용하여 

삭제 처리하도록 설정하면

 

이렇게 데이터가 변경되어도

정상적으로 추출되는 

매크로를 만들 수 있습니다.

 

어떻게 활용하는지에 따라 

더 많은 조건들을 추가해서 

만들 수도 있고 

한번 만들어 놓은 매크로는

복사해서 다른 엑셀에서도

활용하실 수 있습니다.

 

그러니 꼭 직접 적어서 

연습하시고 많이

활용하셨으면 좋겠습니다.

 

여기까지 궁금하신 점은

댓글에 남겨주시고

공감구독도 부탁드립니다.

 

Comments