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
관련 글
'Range object' 카테고리의 다른 글
Range.Hidden property - 행 또는 열 표시/숨기기 (0) | 2024.03.09 |
---|---|
[Range 개체] Characters속성 (0) | 2023.07.24 |
[Range 개체] AutoFill메서드 (0) | 2023.07.17 |
[Range개체] - NumberFormat속성과 NumberFormatLocal속성 (0) | 2023.07.16 |
[Range 개체] 셀 병합과 관련된 속성과 메서드 (0) | 2023.07.15 |