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

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

엑셀의 자동 필터(AutoFilter) 기능은 특정 조건에 맞는 데이터를 손쉽게 추출할 수 있는 매우 효율적인 도구입니다. 여기에 VBA 매크로를 활용하면 어떤 작업이든 가장 빠르고 안전하게 처리할 수 있습니다. 이 글에서는 같은 필드(열)에 여러 조건을 적용하여 자동 필터링하는 4가지 VBA 방법을 소개합니다.

실습용 워크북 다운로드

아래에서 무료 실습용 엑셀 워크북을 내려받아 직접 따라 해볼 수 있습니다.

VBA로 같은 열에 여러 조건을 적용해 자동 필터링하는 4가지 방법

이 섹션에서는 VBA를 사용해 여러 텍스트 및 숫자 값, 그리고 AND 연산자와 OR 연산자를 활용하여 동일한 열에 복수 조건을 걸어 자동 필터링하는 4가지 방법을 배워보겠습니다.

1. 같은 열에 여러 숫자 기준을 적용해 자동 필터링하기

다음 데이터 세트를 살펴보겠습니다. B열에는 무작위 숫자(Random Numbers)가 들어 있고, D열에는 홀수만 정리되어 있습니다. 여기서 할 작업은 D열의 값을 기준으로 B열을 필터링하는 것입니다. 즉, D열에 있는 숫자들을 포함하거나 그 사이에 있는 값들만 남기도록 B열의 무작위 숫자를 홀수 기준으로 걸러내는 것입니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

그럼 엑셀 VBA로 이를 구현하는 방법을 알아보겠습니다.

단계:

  • 먼저 키보드에서 Alt + F11을 누르거나 개발 도구 → Visual Basic 탭으로 이동해 Visual Basic Editor(VBE)를 엽니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

  • 다음으로 코드 창 상단 메뉴에서 삽입 → 모듈을 클릭합니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

  • 그런 다음 아래 코드를 복사해서 코드 창에 붙여넣기 합니다.
Sub AutoFilterWithMultipleCriteriaOnSameColumn()
Dim iArray As Variant
With ThisWorkbook.Worksheets("Column")
    iArray = Split(Join(Application.Transpose(.Range(.Cells(5, 4), .Cells(.Range("D:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, 4)).Value)))
    .Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
End Sub

이제 코드를 실행할 준비가 되었습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

  • F5 키를 누르거나 메뉴에서 실행 → Sub/UserForm 실행을 선택해 매크로를 돌립니다. 하위 메뉴 막대의 작은 실행 아이콘을 클릭해도 됩니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

코드가 성공적으로 실행되면 아래 이미지와 같은 결과를 확인할 수 있습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

위 이미지에서 보듯이 B열이 홀수만 남도록 필터링되었습니다.

같은 코드를 응용해 짝수 기준으로도 필터링할 수 있습니다. 이 경우 D열 대신 다른 열에 짝수 목록만 저장해 두면 됩니다.

VBA 코드 설명

Dim iArray As Variant

배열용 변수를 선언합니다.

With ThisWorkbook.Worksheets("Column")

작업할 워크시트 이름을 지정합니다(예시에서 시트 이름은 "Column"). 실제 사용 시에는 자신의 데이터 세트에 맞게 시트 이름을 수정해야 합니다.

iArray = Split(Join(Application.Transpose(.Range(.Cells(5, 4), .Cells(.Range("D:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, 4)).Value)))

D5 셀부터 시작해 D열에 저장된 조건값들로 선언된 배열을 채웁니다.

.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
  • B4 셀부터 시작하는 B열을, 배열에 담긴 복수 조건에 따라 필터링합니다.
  • 이후 With 블록을 종료하고 워크시트 작업을 마무리합니다.

더 읽어보기: Excel VBA로 자동 필터 켜짐 여부 확인하기 (4가지 쉬운 방법)

2. AND 연산자로 같은 열에 자동 필터링 적용하기

엑셀의 xlAND 연산자는 두 개의 조건과 함께 작동하며, 두 조건을 모두 만족하는 값만 반환합니다.

다음 데이터 세트를 보겠습니다. B열에는 무작위 숫자가 있고, D4:E5 범위에 두 가지 조건을 입력했습니다. 조건은 B열의 값이 2 이상(E4 셀에 저장된 값)이고 9 이하(E5 셀에 저장된 값)여야 한다는 것입니다. 이 조건에 따라 AND 연산자를 사용해 B열을 필터링해 보겠습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

실행 단계는 아래와 같습니다.

단계:

  • 앞서와 같이 개발 도구 탭에서 Visual Basic Editor를 열고 코드 창에 모듈을 삽입합니다.
  • 그다음 아래 코드를 복사해 붙여넣기 합니다.
Sub AutoFilterOnSameColumnWithAND()
With ThisWorkbook.Worksheets("AND")
    .Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With
End Sub

이제 코드를 실행할 준비가 되었습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

  • 이전 섹션에서 안내한 방법대로 매크로를 실행합니다. 결과는 아래 이미지와 같습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

코드가 성공적으로 실행되면 두 조건을 모두 충족하는 2부터 9까지의 값만 B열에 남게 됩니다.

VBA 코드 설명

With ThisWorkbook.Worksheets("AND")
    .Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With

이 코드는 다음과 같이 작동합니다.

  • 먼저 작업할 워크시트 이름을 선언합니다(예시에서 시트 이름은 "AND"). 자신의 데이터에 맞게 수정하세요.
  • 그다음 E4와 E5 셀에 저장된 복수 조건xlAnd 연산자로 결합해 B4 셀부터 시작하는 B열을 필터링합니다.
  • 마지막으로 With 블록을 종료합니다.

더 읽어보기: [해결법] Range 클래스의 AutoFilter 메서드 오류 (5가지 해결책)

3. OR 연산자로 같은 열에 자동 필터링 적용하기

엑셀의 xlOR 연산자 역시 두 개의 조건과 함께 작동하지만, xlAND와 달리 두 조건 중 하나라도 만족하는 값을 모두 반환합니다.

다음 데이터 세트를 보겠습니다. B열에는 무작위 숫자가 있고, D4:E5 범위에 두 가지 조건을 입력했습니다. 조건은 B열의 값이 12 이상(E4 셀)이거나 7 이하(E5 셀)여야 한다는 것입니다. 이번에는 OR 연산자를 사용해 B열을 필터링해 보겠습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

실행 방법을 단계별로 살펴보겠습니다.

단계:

  • 앞서 설명한 대로 개발 도구 탭에서 Visual Basic Editor를 열고 모듈을 삽입합니다.
  • 그다음 아래 코드를 복사해 붙여넣기 합니다.
Sub AutoFilterOnSameColumnWithOR()
With ThisWorkbook.Worksheets("OR")
    .Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With
End Sub

이제 코드를 실행할 준비가 되었습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

  • 이어서 매크로를 실행하고 아래 이미지에서 출력 결과를 확인합니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

코드가 성공적으로 실행되면 12 이상 또는 7 이하인 값만 B열에 남게 됩니다.

VBA 코드 설명

With ThisWorkbook.Worksheets("OR")
    .Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With

이 코드는 다음과 같이 작동합니다.

  • 먼저 작업할 워크시트 이름을 선언합니다(예시에서 시트 이름은 "OR"). 자신의 데이터에 맞게 수정하세요.
  • 그다음 E4와 E5 셀에 저장된 복수 조건xlOr 연산자로 결합해 B4 셀부터 시작하는 B열을 필터링합니다.
  • 마지막으로 With 블록을 종료합니다.

더 읽어보기: Excel VBA로 자동 필터 후 보이는 행만 복사하는 방법

4. 같은 필드에 여러 텍스트 값을 기준으로 자동 필터링하기

다음 데이터 세트를 살펴보겠습니다. B열에는 여러 국가 이름이 들어 있습니다. 이번에는 매크로 코드에 직접 지정한 국가를 기준으로 이 열을 필터링해 보겠습니다. 예시로 Australia(호주)England(잉글랜드)라는 두 나라 이름을 기준으로 자동 필터를 적용합니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

실행 단계는 아래와 같습니다.

단계:

  • 먼저 개발 도구 탭에서 Visual Basic Editor를 열고 코드 창에 모듈을 삽입합니다.
  • 그다음 아래 코드를 복사해 붙여넣기 합니다.
Sub AutoFilterOnSameColumnWithMultipleTexts()
Dim iArray As Variant
iArray = Array("Australia", "England")
Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0
End Sub

이제 코드를 실행할 준비가 되었습니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

  • 이어서 매크로를 실행하고 아래 이미지에서 결과를 확인합니다.

엑셀 VBA로 같은 열(필드)에 여러 조건을 적용해 자동 필터링하는 4가지 방법

그结果, 수십 개 국가 이름으로 가득했던 B열이 코드에 지정한 두 나라 — Australia(호주)와 England(잉글랜드) — 만 남도록 필터링되었습니다.

VBA 코드 설명

Dim iArray As Variant

배열용 변수를 선언합니다.

iArray = Array("Australia", "England")

필터링 기준으로 사용할 텍스트 조건들을 선언된 배열에 저장합니다.

Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0

B4 셀부터 B열 마지막 데이터까지의 범위를 배열에 담긴 여러 텍스트 조건에 따라 필터링합니다.

더 읽어보기: Excel VBA로 특정 값과 같지 않은 항목만 자동 필터링하는 방법

마치며

지금까지 VBA 매크로를 사용해 엑셀에서 같은 필드(열)에 여러 조건을 적용해 자동 필터링하는 4가지 방법을 살펴보았습니다. 숫자 배열, AND/OR 연산자, 텍스트 배열 등 상황에 맞는 방법을 골라 활용하면 데이터 정리 작업이 훨씬 빨라질 것입니다. 이 글이 도움이 되었기를 바라며, 주제에 대해 궁금한 점이 있다면 언제든지 질문해 주세요.

관련 글

  • VBA 자동 필터: 오름차순으로 정렬하기 (3가지 방법)
  • Excel VBA: 자동 필터가 있으면 제거하기 (7가지 예제)