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

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

대량의 데이터를 다루면서 한 번에 여러 필터를 설정해야 하는 상황이라면 엑셀의 고급 필터(Advanced Filter) 기능이 매우 유용합니다. 이 기능은 중복 데이터를 제거해 데이터를 정리하는 용도로도 활용할 수 있습니다. 특히 고급 필터를 적용할 때 VBA 코드를 함께 사용하면 훨씬 간편하게 실행할 수 있습니다. 이번 튜토리얼에서는 엑셀에서 VBA 고급 필터를 활용해 범위 내 여러 조건을 적용하는 방법을 소개합니다.

엑셀에서 VBA 고급 필터로 다중 조건을 처리하는 5가지 효과적인 방법

아래 섹션에서는 VBA 고급 필터를 활용해 다중 조건을 적용하는 5가지 방법을 차례로 살펴보겠습니다. 시작하기 전에 먼저 VBA 고급 필터의 구문을 이해해 두면 도움이 됩니다.

VBA 고급 필터 구문:

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

  • AdvancedFilter: 범위 개체를 나타냅니다. 필터를 적용할 대상 범위를 직접 지정할 수 있습니다.
  • Action: 필수 인수로, xlFilterInPlacexlFilterCopy 두 가지 옵션이 있습니다. xlFilterInPlace는 데이터 세트가 있는 자리에서 바로 필터링할 때 사용하고, xlFilterCopy는 필터 결과를 원하는 다른 위치로 복사할 때 사용합니다.
  • CriteriaRange: 필터링의 기준이 될 조건 범위를 나타냅니다.
  • CopyToRange: 필터 결과를 저장할 위치를 의미합니다.
  • Unique: 선택 인수입니다. True로 설정하면 고유한 값만 필터링되며, 지정하지 않으면 기본적으로 False로 처리됩니다.

아래 이미지는 이 튜토리얼에서 필터를 적용할 때 사용할 샘플 데이터 세트입니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

1. OR 조건으로 VBA 고급 필터 적용하기

첫 번째 방법은 VBA 고급 필터를 사용해 OR 조건을 적용하는 것입니다. 예를 들어 제품명이 Cookies(쿠키)Chocolate(초콜릿)인 데이터만 골라내고 싶다고 가정해 보겠습니다. OR 조건을 적용하려면 조건 값을 서로 다른 행에 배치해야 합니다. 아래 단계를 따라 진행하세요.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

1단계:

  • Alt + F11을 눌러 VBA 편집기(VBA Macro)를 엽니다.
  • 메뉴에서 삽입(Insert)을 클릭합니다.
  • 모듈(Module)을 선택합니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

2단계:

  • 새 모듈에 아래 VBA 코드를 붙여넣어 OR 조건을 적용합니다.
Sub Apply_VBA_Advanced_Filter_for_OR_Criteria()
'Declare Variable for dataset range and for criteria range
   Dim Dataset_Rng As Range
   Dim Criteria_Rng As Range
'Set the location and range of datase range and criteria range
   Set Dataset_Rng = Sheets("Sheet1").Range("B4:E11")
   Set Criteria_Rng = Sheets("Sheet1").Range("B14:E16")
'Apply Advanced Filter to filter the dataset using the criteria
   Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

3단계:

  • 프로그램을 저장한 후 F5 키를 눌러 실행합니다.
  • 아래 이미지와 같이 필터링된 결과를 확인할 수 있습니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

참고: 필터를 해제하고 원본 데이터로 되돌리려면 아래 VBA 코드를 붙여넣고 실행하세요.

Sub Remove_All_Filter()
   On Error Resume Next
'command to remove all the filter to show the previous dataset
   ActiveSheet.ShowAllData
End Sub

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

  • 실행하면 원래의 데이터 세트가 그대로 복원됩니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

2. AND 조건으로 VBA 고급 필터 실행하기

이번에는 AND 조건에 대해 VBA 고급 필터를 실행해 보겠습니다. 아래 스크린샷처럼 가격이 $0.65인 쿠키를 찾고 싶은 경우를 예로 들 수 있습니다. AND 조건을 적용하려면 조건 값을 서로 다른 열에 배치해야 한다는 점에 유의하세요. 아래 지침을 따라 진행합니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

1단계:

  • Alt + F11을 눌러 VBA 편집기를 엽니다.
  • 편집기가 열리면 새 모듈에 아래 VBA 코드를 붙여넣습니다.
Sub Apply_VBA_Advanced_Filter_for_AND_Criteria()
'Declare Variable for dataset range and for criteria range
   Dim Dataset_Rng As Range
   Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
   Set Dataset_Rng = Sheets("Sheet2").Range("B4:E11")
   Set Criteria_Rng = Sheets("Sheet2").Range("B14:E15")
'Apply Advanced Filter to filter the dataset using the criteria
   Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

2단계:

  • 저장 후 F5 키를 눌러 프로그램을 실행합니다.
  • 마지막으로 필터링된 결과를 확인합니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

3. OR 조건과 AND 조건을 결합하여 적용하기

OR 조건과 AND 조건을 동시에 조합해서 적용하는 것도 가능합니다. 예를 들어 Cookies 또는 Chocolates의 값을 모두 가져오되, Cookies에는 가격 $0.65라는 추가 조건을 걸고 싶은 경우입니다. 아래 절차를 따라 완성해 보세요.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

1단계:

  • VBA 편집기를 연 후 아래 VBA 코드를 붙여넣습니다.
Sub Apply_VBA_Advanced_Filter_for_OR_with_AND_Criteria()
'Declare Variable for dataset range and for criteria range
   Dim Dataset_Rng As Range
   Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
   Set Dataset_Rng = Sheets("Sheet3").Range("B4:E11")
   Set Criteria_Rng = Sheets("Sheet3").Range("B14:E16")
'Apply Advanced Filter to filter the dataset using the criteria
   Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

2단계:

  • 프로그램을 저장한 뒤 F5 키를 눌러 실행합니다.
  • 그러면 지정한 ANDOR 조건에 맞는 값들이 표시됩니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

4. 다중 조건에서 고유한 값만 필터링하기

데이터 세트에 중복 항목이 포함되어 있다면 필터링과 동시에 중복을 제거할 수 있습니다. Unique 인수를 True로 설정하면 고유한 값만 추출하고 중복 항목은 삭제됩니다. 아래 지침을 따라 진행하세요.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

1단계:

  • 먼저 Alt + F11을 눌러 VBA 편집기를 엽니다.
  • 새 모듈에 아래 VBA 코드를 붙여넣습니다.
Sub Apply_VBA_Advanced_Filter_for_Unique_Values()
'Declare Variable for dataset range and for criteria range
   Dim Dataset_Rng As Range
   Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
   Set Dataset_Rng = Sheets("Sheet4").Range("B4:E11")
   Set Criteria_Rng = Sheets("Sheet4").Range("B14:E16")
'Apply Advanced Filter to filter the dataset using the criteria
   Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng, Unique:=True
End Sub

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

2단계:

  • 저장 후 F5 키를 눌러 프로그램을 실행합니다.
  • 그러면 중복이 제거된 고유한 값만 화면에 나타납니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

5. 수식을 활용한 조건부 필터 적용하기

앞선 방법들에 더해, 수식을 사용한 조건도 적용할 수 있습니다. 예를 들어 총 가격(Total prices)$100보다 큰 항목을 찾고 싶은 경우입니다. 아래 단계를 그대로 따라 하면 됩니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

1단계:

  • 먼저 Alt + F11을 눌러 VBA 편집기를 엽니다.
  • 모듈(Module)을 선택하고 아래 VBA 코드를 붙여넣습니다.
Sub Apply_VBA_Advanced_Filter_for_Formula()
'Declare Variable for dataset range and for criteria range
   Dim Dataset_Rng As Range
   Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
   Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11")
   Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15")
'Apply Advanced Filter to filter the dataset using the criteria
   Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng
End Sub

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

2단계:

  • 프로그램을 저장한 후 F5 버튼을 누르면 결과를 확인할 수 있습니다.

참고: 추가로 xlFilterCopy 동작을 사용하면 결과를 새 범위나 새 워크시트 등 원하는 위치로 출력할 수 있습니다. 아래 VBA 코드를 붙여넣고 실행하면 Sheet6B4:E11 범위에 결과가 저장됩니다.

'Declare Variable for dataset range and for criteria range
   Dim Dataset_Rng As Range
   Dim Criteria_Rng As Range
'Set the location and range of dataset range and criteria range
   Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11")
   Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15")
'Apply Advanced Filter to filter the dataset using the criteria
Dataset_Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Criteria_Rng, CopyToRange:=Sheets("Sheet6").Range("B4:E11")
End Sub

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

  • 실행하면 새 워크시트 'Sheet6'에서 최종 결과를 확인할 수 있습니다.

엑셀 VBA 고급 필터로 범위 내 다중 조건 적용하는 5가지 방법

마무리

정리하자면, 이번 글을 통해 엑셀에서 VBA 고급 필터를 사용해 범위 내 여러 조건을 적용하는 방법을 익히셨기를 바랍니다. 소개해 드린 모든 방법을 실제 데이터에 직접 적용해 보며 연습해 보세요. 반복 학습과 실습을 통해 활용 능력을 키울 수 있습니다.

궁금한 점이 있다면 언제든지 문의해 주세요. 아래 댓글란에 의견이나 질문을 남겨주시면 빠르게 답변드리겠습니다.

앞으로도 유익한 강좌로 찾아오겠습니다. 함께 꾸준히 배워나가요!

함께 보면 좋은 글

  • 엑셀 고급 필터 완벽 정리 [다중 열 & 조건, 수식 활용, 와일드카드]
  • 엑셀 고급 필터로 빈 셀 제외하는 방법 (3가지 쉬운 팁)
  • 엑셀 VBA: 범위 내 다중 조건 고급 필터 (5가지 방법)
  • 엑셀 고급 필터로 다른 위치에 복사하는 방법