본문 바로가기
Range object

[Range 개체] AutoFilter Method - 자동필터

2023. 7. 19.

AutoFilter Method

자동 필터를 사용하여 목록을 필터링합니다.

 

구문은 다음과 같습니다.

Syntax

expression.AutoFilter (Field, Criteria1, Operator, Criteria2, VisibleDropDown, SubField)

 

Field

필터의 기준이 될 필드의 정수 오프셋입니다(목록 왼쪽부터, 가장 왼쪽 필드가 1번 필드)

 

아래 코드는 자동필터가 되어 있는 상태에서 8 번째 필드의 값을 조건으로 필터링한 예제입니다.

Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveSheet.Range("$A$1:$H$15").AutoFilter Field:=8, Criteria1:="10"
End Sub

Criteria1

필터링할 첫번째 조건입니다.

 

criteria (문자열; 예: "101")은 필터링 조건을 나타냅니다. 빈 필드를 찾으려면 "="를 사용하고, 비어 있지 않은 필드를 찾으려면 "<>"를 사용하고, 데이터 유형에서 (No Data) 필드를 선택하려면 "><"를 사용합니다.

이 인수가 생략된 경우, 기본적으로 모든 조건을 포함하는 조건(All)으로 간주됩니다. Operator가 xlTop10Items인 경우, Criteria1은 항목 수를 지정합니다 (예: "10").

Sub FilterByEmptyCells()
'
' FilterByEmptyCells Macro
'

'
    ActiveSheet.Range("$A$1:$H$15").AutoFilter Field:=7, Criteria1:="="
End Sub

 

Sub FilterByNonEmptyCells()
'
' FilterByNonEmptyCells Macro
'

'
    ActiveSheet.Range("$A$1:$H$15").AutoFilter Field:=7, Criteria1:="<>"
End Sub

 

 

Sub FilterDataByCriteria()
    '
    ' Macro1 Macro
    '

    '
    ActiveSheet.Range("$A$1:$H$15").AutoFilter Field:=6, Criteria1:=">=1500"
    ActiveSheet.Range("$A$1:$H$15").AutoFilter Field:=8, Criteria1:="30"
    
End Sub

 

Operator

필터 유형을 지정하는 XlAutoFilterOperator 상수입니다.

 

 

XlAutoFilterOperator enumeration (Excel)

Office VBA reference topic

learn.microsoft.com

Criteria2

필터링할 두 번째 조건입니다.

 

두 번째 기준(문자열)입니다. Criteria1 및 연산자와 함께 복합 기준을 구성하는 데 사용됩니다. 날짜, 월 또는 연도를 기준으로 필터링하는 날짜 필드에서 단일 기준으로도 사용됩니다. 그 뒤에 필터링을 자세히 설명하는 배열(Level, Date). 여기서 Level은 0-2(연, 월, 날짜)이고 Date는 필터링 기간 내에 유효한 날짜 중 하나입니다.

 

청구국가를 브라질과 캐나다로 선택한 xlOr예제입니다.

Sub FilterByCountry()
    ActiveSheet.Range("$A$1:$H$413").AutoFilter Field:=8, Criteria1:= _
        "=Brazil", Operator:=xlOr, Criteria2:="=Canada"
End Sub

3개 이상의 조건

매크로 기록기 이용시 여러개의 값을 선택하면 Array함수가 사용되고 Operator은 xlFilterValues로 기록되는걸 볼 수 있습니다.

Sub FilterCities()
    ActiveSheet.Range("$A$1:$H$413").AutoFilter Field:=7, Criteria1:=Array( _
        "Amsterdam", "Berlin", "Chicago", "Delhi", "Edinburgh"), Operator:=xlFilterValues
End Sub

 

 

Sub FilterCountries()
    ActiveSheet.Range("$A$1:$H$413").AutoFilter Field:=8, Criteria1:=Array( _
        "Argentina", "Belgium", "Denmark", "France"), Operator:=xlFilterValues
End Sub

VisibleDropDown

True이면 필터링된 필드에서 자동 필터 드롭다운 화살표를 표시합니다. False이면 필터링된 필드에서 자동 필터 드롭다운 화살표를 숨깁니다. 기본값은 True입니다.

 

다음 코드는 두 번째 열만 드롭다운 화살표를 숨깁니다.

Sub CheckAutoFilterDropdown()
    Dim ws As Worksheet
    Dim autofilterStatus As Boolean
    Dim rng As Range

    Set ws = ActiveSheet
    Set rng = ws.Range("A1").CurrentRegion

    '자동 필터 상태 확인
    autofilterStatus = ws.AutoFilterMode

    '자동 필터가 꺼져 있는 경우 자동 필터 실행
    If autofilterStatus = False Then

        ws.Range("A1").CurrentRegion.AutoFilter
    Else
    End If
    rng.AutoFilter 2, visibledropdown:=False

End Sub

 

다음 코드는 짝수 행만 드롭다운 화살표를 숨깁니다.

Sub HideDropDownsForEvenColumns()
    Dim ws As Worksheet
    Dim autofilterStatus As Boolean
    Dim rng As Range
    Dim columnCounter As Long

    Set ws = ActiveSheet
    Set rng = ws.Range("A1").CurrentRegion

    '자동 필터 상태 확인
    autofilterStatus = ws.AutoFilterMode

    '자동 필터가 꺼져 있는 경우 자동 필터 실행
    If autofilterStatus = False Then

        ws.Range("A1").CurrentRegion.AutoFilter
    Else
    End If

    For columnCounter = 1 To rng.Columns.Count
        If columnCounter Mod 2 = 0 Then
            rng.AutoFilter columnCounter, visibledropdown:=False
        Else
        End If
    Next
End Sub

 

다음 코드는 특정 열만 드롭다운 화살표를 숨깁니다.

Sub HideAutoFilterButtonsForMultipleColumns()
    Dim ws As Worksheet
    Dim autofilterStatus As Boolean
    Dim rng As Range
    Dim hideColumns As Variant
    Dim i As Long

    Set ws = ActiveSheet
    Set rng = ws.Range("A1").CurrentRegion

    '자동 필터 상태 확인
    autofilterStatus = ws.AutoFilterMode

    '자동 필터가 꺼져 있는 경우 자동 필터 실행
    If autofilterStatus = False Then

        ws.Range("A1").CurrentRegion.AutoFilter
    Else
    End If
    
    hideColumns = Array(1, 4, 5)
    
    For i = LBound(hideColumns) To UBound(hideColumns)
        rng.AutoFilter Field:=hideColumns(i), Visibledropdown:=False
    Next i
End Sub

 

관련 글

AutoFilter object

Worksheet.AutoFilter 속성

Worksheet.AutoFilterMode 속성

Worksheet.FilterMode 속성

Filters 개체

Filter 개체