Lost Information!

엑셀 VBA 기초 - AdvancedFilter 고급필터 - 1편 본문

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

엑셀 VBA 기초 - AdvancedFilter 고급필터 - 1편

Lostinformation 2020. 11. 20. 22:09

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

 

지난 글에서는 

UNION에 대해서 

알려드렸는데요.

 

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

기억이 나질 않으신다면

밑에 글을 참고해주세요.

red-s.tistory.com/2447

 

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

모두가 칼퇴하는 그날까지~ 지난 글에서는 엑셀 데이터를 보고 합집합에 대해 알려드렸는데요. 만일 저번 내용을 모르시거나 기억이 나질 않으신다면 밑에 글을 참고해주세요. red-s.tistory.com/2

red-s.tistory.com

이번 글에서는 
고급 필터에 대해서

알려드리도록 하겠습니다.

 

고급 필터는

원본 데이터에서 

내가 원하는 조건의 

데이터를 항목 선택과

마우스 클릭만으로 

뽑아내는 기능입니다.

 

 

먼저 저번 글과 비슷한

데이터가 있다고 

가정할게요.

 

저번에는 여성만을 추출해서

복사해서 붙여 넣었는데요.

 

이번에는 조건에 따라 

추출되도록 하겠습니다.

 

그럼 일단 

ALT + F11을 눌러주세요.

 

 

그다음 이렇게 적어주세요.

 

바로 설명 들어가면

 

Sub Test01()

Test01이라는 

매크로를 만들어

 

Dim lngE            As Long

lngE라는 변수를 설정하고

(마지막행 번호를 받는 변수)


Dim rngD            As Range 

rngE라는 변수를 설정하고

(원본 데이터의

범위를 받는 변수 )


Dim rngC            As Range

rngC라는 변수를 설정하고

(조건 범위를 받는 변수)


Dim rngP            As Range

rngP라는 변수를 설정해

(붙여 넣는 범위를 받는 변수)

 

lngE = Range("F10000"). End(xlUp). Row

lngE는 F10000부터

올라오면서 데이터 있는 

마지막 행 번호 


Set rngD = Range("F6:L" & lngE)

rngD는 F6부터

L(마지막행 번호)까지

설정해


Set rngC = Range("O2:O3")

rngC는 O2부터 O3까지

변수의 범위를 설정해


Set rngP = Range("O6:U6")

rngP는 O6부터 U6로 설정해

(필터 제목이 있는 범위)

 

rngP.CurrentRegion.Offset(1, 0). Clear

rngP는 아래로 한 칸 내려서

초기화해줘

(필터링한 값이 있다면

삭제하고 새로 필터링하기 위해)

 

rngD.AdvancedFilter xlFilterCopy, rngC, rngP, True

rngD는 고급 필터를 

사용하는데 다른 곳에 

복사해서 붙여 넣어줘

(단 rngC와 rngP의 값에

둘 다 성립하는 것만)

 

End Sub

 

그리고 확인해보면

 

그러면 조건을 

남과 여로 변경하여도 

성별 버튼만 누른다면

알아서 왼쪽으로 

필터링된다는 것을

확인할 수 있습니다.

 

이게 가장 기본입니다.

 

이것만 하게 된다면

추가 조건이 붙어도 

또는 OR과 나와도

OR and가 같이 있어도

필터링할 수 있습니다.

 

오늘 글은 조금 짧다고 

느낄 수도 있지만 

가장 기본이기에 꼭 

직접 적고 익히셨으면 

좋겠습니다.

 

다음 글에서는 추가 조건이

붙어도 필터링하는 방법을

알려드리도록 하겠습니다.

 

여기까지 궁금하신 점은

댓글에 남겨주시고

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

 

Comments