엑셀 VBA filter 함수 - egsel VBA filter hamsu

엑셀 고급필터 매크로, 필터 자동화 완벽 정리

엑셀 고급필터 매크로 목차 바로가기

  1. 예제파일 다운로드
  2. 자동필터 vs 고급필터의 가장 큰 차이점은?
  3. 실무에서 너무나 유용한 VBA 속성! - Current Region
  4. 고급필터 기초 사용법
  5. 고급필터 응용 사용법
    5-1. 여러 조건을 동시에 필터링하기
    5-2. 결과로 특정 필드만 반환하기
  6. 고급필터 매크로 기본 예
  7. 자주묻는질문. 다른 시트의 범위를 필터링하려면 어떻게 해야 하나요?

영상 강의

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

라이브 강의 전체영상도 함께 확인해보세요!

위캔두 회원이 되시면 매주 오빠두엑셀에서 진행하는 라이브강의 풀영상을 확인하실 수 있습니다.

자동필터 vs 고급필터의 가장 큰 차이점은?

실무에서 데이터를 분석할 때 피벗테이블과 더불어 가장 자주사용되는 기능, 바로 "필터"입니다. 엑셀에서 사용되는 필터는 크게 두가지로 나누어 지는데, 기본으로 사용되는 '자동필터'다양한 조건을 선택해서 사용할 수 있는 '고급필터'로 구분됩니다.

내용 자동필터 고급필터
단축키 Ctrl + Shift + L ALT - O - Q - (ENTER)
필터 범위 원본 데이터 위에 그대로 적용
(원본 데이터가 변경될 위험)
원본 데이터에 적용하거나
다른 범위로 출력 가능
(원본 데이터 유지한 채 필터링 가능)
필터 유연성 단일 조건으로만 필터링 가능 여러가지 다양한 조건으로 필터링 가능
편의성 Ctrl + Shift + L 단축키로 빠르게 적용할 수 있어 실무에서 편하게 사용 가능 매번 반복해서 사용할 경우 피로감 누적↑
매번 달라지는 범위를 고려해야 하므로 매크로 없이 사용하기 어려움

고급필터를 사용하면 자동필터로는 적용할 수 없는 다양한 조건으로 필터링 할 수 있다는 장점이 있지만, CTRL 단축키로 빠르게 적용할 수 있는 자동필터와 달리 매번 반복해서 사용하기에 어렵다는 점, 그리고 매번 달라지는 범위를 고려해야 하기 때문에 매크로 없이 사용하기에는 불편하다는 점이 있습니다.

고급필터가 매크로를 만나면 정말 강력해집니다.

따라서 이번 강의에서는 고급필터와 매크로를 활용한 필터 자동화 기법에 대해 단계별로 알아보겠습니다.

실무에서 너무나 유용한 VBA 속성! - Current Region

엑셀 매크로로 자동화를 구현할 때 초보자가 알아두면 매우 편리한 대표 속성이 있습니다. 바로 CurrentRegion 인데요. "CurrentRegion을 사용하면, 선택한 셀과 연속된 범위를 한번에 선택" 할 수 있습니다.

Ctrl + A 단축키와 CurrentRegion은 동일한 동작을 수행합니다.

예제파일을 실행한 뒤, 표의 아무셀을 선택한 뒤 단축키 Ctrl + A 를 누르면 선택한 셀과 연속된 범위가 한 번에 선택되는데요. 이 동작이 CurrentRegion 속성입니다.

Range("셀주소").CurrentRegion
'해당 셀과 연속된 범위를 확장해서 선택합니다.

이번 강의에서는 CurrentRegion 속성을 사용해서, 매번 달라지는 원본데이터범위, 조건범위, 출력범위를 자동으로 인식하는 필터링 자동화 서식을 제작합니다.

고급필터 기초 사용법

고급필터를 사용하려면 아래 3가지 범위가 준비되어야 합니다.

범위 설명
목록범위 필터링 할 원본 데이터가 입력된 범위입니다.
조건범위 필터링 할 조건이 입력된 범위입니다. 조건범위의 머리글은 반드시 목록범위의 머리글과 동일해야 입력해야 합니다.
복사위치범위 [선택] 만약 필터링 한 결과를 다른 범위에 출력할 경우, 복사위치를 지정합니다. 복사위치는 '머리글'이 입력된 범위를 입력하면 됩니다.

오빠두Tip : 만약 복사위치로 비어있는 셀을 선택하면, 목록범위의 모든 데이터가 복사위치로 필터링됩니다.

오빠두Tip : 복사위치범위는 결과로 특정필드만 출력해야 할 경우, 출력할 필드의 머리글을 입력한 뒤, 머리글 범위를 입력합니다.

고급필터 기초 사용법은 예제파일과 함께 단계별로 알아보겠습니다.

  1. 조건범위 만들기 : 예제파일을 실행한 뒤, RawData 시트로 이동합니다. K1셀을 선택한 뒤, 필터링 할 조건을 하나씩 입력합니다. 이번 강의에서는 고객명과 지역, 대분류로 필터링하겠습니다. K1셀부터 오른쪽으로 한칸씩 이동하면서 각각 '고객명', '지역', '대분류'를 입력합니다.
    조건으로 입력할 머리글을 하나씩 추가합니다.

    오빠두Tip : 조건범위에 입력하는 머리글은 반드시 원본데이터 범위의 머리글과 동일해야 합니다.

  2. 이후 조건범위 머리글을 색 채우기로 꾸며줍니다.
    머리글 범위를 꾸며줍니다.
  3. 첫번째 예제로 고객명에 삼성을 포함하는 경우를 필터링 하겠습니다. 고객명 아래쪽에 조건으로 "*삼성*"을 입력합니다.
    고객명 조건으로 "*삼성*"을 입력합니다.

    오빠두Tip : 고급필터는 기본값으로 유사일치를 하기 때문에 "삼성"만 입력해도 "*삼성*"과 동일하게 검색합니다. 만약 정확히 일치하는 값을 검색하려면 "=삼성"을 조건으로 입력합니다.

  4. 고급필터 적용하기 : 예제파일에서 원본데이터 범위의 아무 셀을 선택합니다. 이후 [데이터] - [정렬 및 필터] - [고급]을 클릭하면 고급필터가 실행되며 목록범위로 원본데이터 범위인 A1:I510이 자동으로 입력됩니다.
    고급핕터를 실행합니다.
  5. 조건범위로 우리가 방금전에 입력했던 조건범위인 K1:M2 범위를 입력합니다.
    고급필터의 조건범위를 지정합니다.
  6. 고급필터 조건으로 '다른 장소에 복사'를 선택한 뒤, 고급필터 결과를 출력할 위치로 O1셀 (또는 비어있는 아무셀)을 선택합니다. 이후 [확인] 버튼을 클릭합니다.
    다른 장소에 복사를 선택 후, 복사 위치를 지정합니다.

    오빠두Tip : 고급필터 복사위치 범위로 빈 셀을 선택하면, 원본데이터의 모든 필드가 필터링 결과로 출력됩니다.

  7. 고객명에 '삼성'을 포함하는 모든 고객이 필터링되었습니다.
    확인 버튼을 클릭하면 데이터가 필터링됩니다.

고급필터 응용 사용법

고급필터의 조건범위를 입력하는 방법만 이해하면, 정말 다양한 방법으로 활용할 수 있습니다. 고급필터 조건은 크게 AND 와 OR 조건으로 나눌 수 있는데요. [AND 조건]은 "A와 B를 모두 만족하는 경우", [OR 조건]은 "A 또는 B 중 하나라도 만족하는 경우"를 필터링 합니다. 그림으로 살펴보면 아래와 같습니다.

AND 조건 (=A와 B를 모두 만족하는 경우)

고객명에 삼성을 포함하면서, 지역이 서울인 경우를 필터링 합니다.

고객명이 삼성이면서 지역이 서울인 경우를 필터링합니다.OR 조건 (=A 또는 B 중 하나라도 만족하는 경우)

고객명이 삼성을 포함하거나 현대를 포함하는 경우를 모두 필터링합니다.

고객명이 삼성이거나 현대인 고객을 모두 필터링합니다.

오빠두Tip : 고급필터에서 "AND 조건은 가로로 추가하고 OR 조건은 세로로 추가한다"라고 기억하셔도 좋습니다!

AND 조건과 OR 조건 혼합

아래와 같이 조건을 입력하면, 서울에 위치하면서 '삼성'을 포함하는 고객과 사무용품을 구매하면서 '현대'를 포함하는 고객을 필터링합니다.

여러 조건을 AND/OR 조건으로 혼합해서 입력합니다.

여러 조건을 동시에 필터링하기

  1. 조건범위 입력하기 : 예제파일에 입력했던 조건범위를 수정합니다. 이번 강의에서는 고객명으로 삼성을 포함하거나 현대를 포함하는 모든 고객을 필터링하겠습니다. 조건범위의 조건으로 아래 그림과 같이 입력합니다.
    조건으로 "*삼성*"과 "*현대*"를 입력합니다.
  2. 고급필터 적용하기 : '데이터' - '정렬 및 필터' - '고급'을 클릭해서 고급필터를 실행합니다. 이후 목록범위와 조건범위, 복사위치 범위를 선택한 뒤 [확인] 버튼을 클릭합니다.
    고급필터를 실행합니다.

    오빠두Tip : 방금 전 조건범위를 변경했으므로, 조건범위를 아래로 한칸 늘려서 입력합니다.

  3. 고객명이 삼성이면서, 현대인 고객이 모두 필터링되었습니다.
    고객명이 현대와 삼성인 고객이 모두 필터링됩니다.

결과로 특정 필드만 반환하기

  1. 복사위치 범위 수정하기 : 복사위치 범위에서 출력할 머리글을 직접 입력해서 원본 데이터의 특정 필드만 결과로 출력할 수 있습니다. 이번 강의에서는 '주문일, 지역, 고객명, 제품명, 단가, 수량' 만 출력하고 나머지 필드는 제거해주겠습니다.
    필터링 결과로 출력할 범위의 머리글을 수정합니다.
  2. 다시 고급필터를 실행하면 지정한 필드만 필터링 결과로 출력됩니다.
    입력한 머리글만 필터링 결과로 출력됩니다.

고급필터 매크로 기본 예제

고급필터는 매크로 1줄로 입력해서 아주 손쉽게 사용할 수 있습니다. 조금 전에 알아본 CurrentRegion 속성을 같이 사용하면 활용도가 10배 이상 올라가는데요. 사용할 때마다 매번 달라지는 원본데이터와 조건범위를 자동으로 인식하는 자동화 필터를 만들 수 있습니다.

  1. 매크로 녹화 기능 사용하기 : 예제파일에서 '개발도구' - '매크로 기록' 버튼을 클릭합니다. 만약 개발도구가 안보일 경우, 아래 개발도구 활성화방법 게시글을 참고해서 개발도구를 활성화합니다.
    개발도구 - 매크로 기록 버튼을 클릭합니다.

    오빠두Tip : 또는 엑셀 화면 좌측하단에 매크로기록 버튼을 클릭해도 매크로가 녹화됩니다.

  2. 매크로 기록 대화상자가 나오면, 매크로 이름으로 "고급필터", 매크로 저장위치는 "현재 통합문서"를 선택한 뒤, [확인] 버튼을 클릭합니다. 버튼을 클릭하면 매크로 녹화가 진행됩니다.
    매크로 기록을 설정합니다.
  3. 이제 고급필터를 실행하겠습니다. [데이터] - [정렬 및 필터] - [고급] 버튼을 클릭해서 고급필터를 한 번 실행합니다. 고급필터를 실행하면 해당 작업이 매크로로 녹화됩니다.
    고급필터를 실행합니다. (다른 장소에 복사 선택)

    오빠두Tip : '다른 장소에 복사'를 체크한 뒤 고급필터를 실행합니다. 만약 현재 위치에 필터를 선택할 경우, 매크로 기록 결과의 Action 으로 xlFilterInPlace 이 기록됩니다.

  4. 다시 개발도구로 온 뒤, [기록 중지] 버튼을 클릭해서 매크로 기록을 중지합니다. 이후 Visual Basic 버튼을 클릭하거나 단축키 Alt + F11 키로 매크로 편집기를 실행합니다.
    기록 중지 버튼을 클릭해서 매크로 녹화를 중지합니다.
  5. 기록된 매크로 확인하기 : 매크로 편집기로 이동하면 좌측에 모듈이 보입니다. 모듈을 더블클릭하면 '고급필터' 매크로를 확인할 수 있습니다. 기록된 매크로는 매크로 녹화 시 실행된 동작에 따라 조금씩 다를 수 있지만, 기록된 매크로 중 고급필터에 대한 매크로는 Range.AdvancedFilter 로 입력된 부분입니다. 해당 부분을 제외한 나머지 매크로는 모두 지워줍니다.
    기록된 매크로 중, AdvancedFilter를 제외한 나머지 매크로는 지워줍니다.
  6. 고급필터(Range.AdvancedFilter)에 들어가는 인수는 총 4개입니다. 각 인수에 대한 자세한 설명은 영상강의를 참고해주세요.
    인수 설명
    Action 고급필터 출력 옵션입니다. xlFilterInPlace 는 현재 위치에 필터, xlFilterCopy는 다른 장소에 복사를 실행합니다.
    CriteriaRange
    [선택인수]
    조건범위입니다.
    CopyToRange
    [선택인수]
    복사위치범위입니다.
    Unique
    [선택인수]
    TRUE일 경우 필터링 결과 중 동일한 항목이 있을 경우, 하나만 출력합니다. 기본값은 FALSE 입니다.
  7. CurrentRegion으로 범위 수정하기 : 이제 고급필터 매크로에 기록된 범위를 CurrentRegion을 사용해서 자동으로 확장된 범위가 입력되도록 수정합니다. 범위를 수정하는 과정 및 자세한 설명은 영상강의를 참고해주세요.
    기록된 범위를 모두 CurrentRegion 범위로 변경합니다.
    기존 범위 수정된 범위
    Range("A1:I510") Range("A1").CurretRegion
    Range("K1:M3") Range("K1").CurrentRegion
    Range("O1:T1") Range("O1:T1").CurrentRegion.Rows(1)
  8. 매크로 실행버튼 만들기 : 고급필터 매크로가 작성되었습니다. 이제 시트 위에 도형을 추가해서 매크로를 실행할 버튼으로 만들어 주겠습니다. [삽입] - [도형] 에서 버튼으로 사용할 도형을 추가합니다.
    매크로를 실행한 도형을 추가합니다.

    오빠두Tip : 키보드 Alt키를 누른채 도형을 삽입하면 셀 크기에 맞춰 도형이 삽입됩니다.

  9. 도형을 우클릭 한 뒤, [매크로 지정]으로 이동하면 매크로 지정 대화상자가 실행됩니다. 목록에서 '고급필터'를 선택한 뒤, [확인]을 클릭합니다.
    도형 위로 고급필터 매크로를 추가합니다.
  10. 이제 버튼을 클릭하면 입력한 조건에 따라 데이터가 자동으로 필터링됩니다.

자주 묻는 질문

자주묻는질문1. 다른 시트 범위를 참조하려면 매크로를 어떻게 작성해야하나요?

다른 시트의 범위를 참조해야 할 경우, 각 범위 앞으로 아래 예제와 같이 시트를 지정해서 명령문을 작성합니다.

기존 범위 시트를 지정한 범위
Range("범위").CurrentRegion WorkSheets("시트명").Range("범위").CurrentRegion

관련 링크 : MS 홈페이지 엑셀 고급필터 (AdvancedFilter) VBA 코드 상세설명

Toplist

최신 우편물

태그