Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

대량의 데이터에서 특정 자료만 골라내야 할 때 우리는 마이크로소프트 엑셀(Microsoft Excel)필터(Filter) 기능을 자주 사용합니다. 여기에 한 단계 더 나아간 기능이 바로 고급 필터(Advanced Filter)인데요, 놀랍게도 Excel VBA에도 이 고급 필터 옵션이 포함되어 있어 반복 작업을 매크로로 자동화할 수 있습니다.

이 글에서는 조건(기준)을 활용한 Excel VBA 고급 필터의 실전 예제 6가지를 단계별로 소개하겠습니다.

조건 지정 Excel VBA 고급 필터 예제 6가지

이 섹션에서는 총 6가지 예제를 통해 VBA 고급 필터의 다양한 활용법을 살펴봅니다. 설명에는 아래와 같은 데이터 세트를 사용합니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

예제 1: 현재 위치에서 데이터 필터링하기

VBA 매크로를 적용해 조건에 맞는 데이터를 필터링하고, 그 결과를 원래 위치 그대로 표시하는 방법입니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

이 예제에서는 범위 B16:E17에 필터 조건을 설정했습니다.

1단계:

  • 먼저 리본 메뉴에서 개발 도구(Developer) 탭으로 이동합니다.
  • 매크로 기록(Record Macro)을 클릭합니다.
  • 새 대화 상자가 나타나면 매크로 이름을 입력하고 확인(OK)을 누릅니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

2단계:

  • 리본 메뉴에서 매크로(Macros)를 클릭합니다.
  • 목록에서 해당 매크로를 선택한 뒤 단계별 실행(Step Into)을 클릭합니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

3단계:

  • 아래의 VBA 코드를 복사하여 모듈(Module) 창에 붙여넣습니다.
Sub Filter_Criteria()
Dim data As Range
Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter xlFilterInPlace, criteria
End Sub

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

4단계:

  • F5 키를 눌러 코드를 실행합니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

이번 예제에서는 Chicago 매장의 매출 내역만 표시되도록 조건을 설정했으며, 실행 결과는 위 이미지와 같습니다. 이 방식은 데이터와 조건이 같은 시트 안에 있을 때 유용하게 활용됩니다.

예제 2: 데이터와 조건이 서로 다른 시트에 있을 때 고급 필터 적용하기

실무에서는 필터링할 데이터와 조건이 서로 다른 시트에 분리되어 있는 경우가 많습니다. 이런 상황에서 VBA로 고급 필터를 처리하는 방법을 알아보겠습니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

데이터는 Criteria_Different_Sheet 시트에 있고, 조건은 Criteria라는 별도의 시트에 입력되어 있습니다.

1단계:

  • Alt+F11 키를 눌러 VBA 편집기를 열고 모듈 창으로 이동합니다.
  • 아래 코드를 모듈 창에 입력합니다.
Sub Filter_Criteria_2()
 Dim data As Range
 Dim criteria As Range
   Set data = Sheets("Criteria_Different_Sheet").Range("B4:E14")
   Set criteria = Sheets("Criteria").Range("B4:E5")
   data.AdvancedFilter xlFilterInPlace, criteria
End Sub

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

2단계:

  • F5 키를 눌러 코드를 실행합니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

이처럼 조건이 다른 시트에 있더라도 시트 이름과 범위를 정확히 지정해 주면 문제없이 데이터를 필터링할 수 있습니다.

예제 3: 같은 시트의 다른 위치로 필터 결과 복사하기

필터링된 데이터를 원래 위치가 아닌 다른 곳에 복사해서 붙여넣고 싶다면 아래 단계를 따르세요.

1단계:

  • Alt+F11 키를 눌러 모듈 창으로 들어갑니다.
  • 모듈 창에 아래 코드를 작성합니다.
Sub Filter_Criteria_3()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=criteria, CopyToRange:=Range("G4:J14")
End Sub

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

2단계:

  • F5 키를 누르면 코드가 실행됩니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

실행 결과를 보면 필터링된 데이터가 다른 위치에 복사된 것을 확인할 수 있습니다. 여기서 핵심은 CopyToRange 인수로, 붙여넣을 목적지 범위를 지정하는 역할을 합니다.

예제 4: VBA로 고유한 값만 추출하기

Excel VBA 고급 필터를 활용하면 중복 없는 고유한 데이터만 손쉽게 추출할 수 있습니다. 이 방식에서는 각 값의 첫 번째 항목만 남기고 두 번째 이후 중복 항목은 제거됩니다.

1단계:

  • Alt+F11 키를 눌러 모듈 창에 들어갑니다.
  • 아래 코드를 모듈 창에 입력합니다.
Sub Filter_Criteria_4()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter xlFilterInPlace, criteria, , True
End Sub

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

2단계:

  • F5 키를 눌러 코드를 실행합니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

설명을 위해 첫 번째 항목은 초록색, 중복된 두 번째 항목은 노란색으로 표시해 두었습니다. 코드를 실행하면 노란색으로 표시된 중복 셀이 제거되고 고유한 값만 남습니다.

예제 5: 조건 없이 중복 데이터 제거하기

별도의 조건을 설정하지 않고도 중복 항목을 제거할 수 있습니다. 아래 단계를 확인해 보세요.

1단계:

  • Alt+F11 키를 눌러 VBA 모듈 창으로 이동합니다.
  • 아래 코드를 복사해 모듈 창에 붙여넣습니다.
Sub Filter_Criteria_5()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
data.AdvancedFilter xlFilterInPlace, , , True
End Sub

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

2단계:

  • F5 키를 누르면 코드가 실행됩니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

데이터 세트에서 중복 항목에 미리 색칠을 해두었는데요, 코드를 적용하면 첫 번째 항목만 남고 나머지 중복 항목은 모두 제거됩니다.

예제 6: 조건에 연산자를 넣어 데이터 필터링하기

필터 조건에 비교 연산자(>, <, >= 등)를 활용하면 숫자 조건 기반의 필터링도 가능합니다. 아래 단계를 따라 해 보세요.

1단계:

  • Alt+F11 키를 눌러 모듈 창으로 들어갑니다.
  • 모듈 창에 아래 코드를 입력합니다.
Sub Filter_Criteria_7()
 Dim data As Range
 Dim criteria As Range
Set data = Range("B4:E14")
Set criteria = Range("B16:E17")
data.AdvancedFilter xlFilterCopy, criteria, Range("G4:J14")
End Sub

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

2단계:

  • F5 키를 눌러 코드를 실행합니다.

엑셀 VBA 고급 필터(Advanced Filter) 활용법: 조건 지정 예제 6가지

실행 결과, 조건 셀에 >$1.00처럼 연산자를 입력했기 때문에 $1.00보다 큰 값들만 추출됩니다.

활용 시 주의사항

  • 데이터의 각 열에는 반드시 고유한 제목(헤더)이 있어야 합니다.
  • 데이터 세트 안에는 빈 행이 없어야 정상적으로 필터가 작동합니다.

마무리

지금까지 Excel VBA 고급 필터에서 조건을 활용하는 6가지 예제를 살펴봤습니다. 현재 위치 필터링부터 다른 시트 간 조건 참조, 결과 복사, 중복 제거, 연산자 활용까지 실무에서 바로 쓸 수 있는 내용들이니 필요한 상황에 맞게 활용해 보시길 바랍니다. 더 궁금한 점이 있다면 댓글로 의견을 남겨주세요.

함께 읽으면 좋은 글

  • 엑셀 고급 필터 다중 조건 활용법 (15가지 예제)
  • VBA 매크로로 만드는 동적 고급 필터
  • 엑셀 고급 필터 조건 범위 활용 (18가지 응용)
  • 조건 범위에 텍스트가 포함된 경우 고급 필터 사용법
  • 엑셀 고급 필터로 "포함하지 않음" 조건 적용하기 (2가지 방법)