본문 바로가기
Range object

[Range 개체] AdvancedFilter메서드 - 고급필터 사용하기

2023. 7. 11.

AdvancedFilter Method

기준 범위에 따라 목록에서 데이터를 필터링하거나 복사합니다.

문법은 다음과 같습니다.

Syntax


expression.AdvancedFilter (Action, CriteriaRange, CopyToRange, Unique)

Action : 복사할지 필터링할지 지정합니다. Action만 필수고 나머지는 옵션입니다.

XlFilterAction 열거형 값을 사용합니다.

XlFilterAction enumeration (Excel)

Office VBA reference topic

learn.microsoft.com

CriteriaRange : 조건 범위입니다.

CopyToRange :ActionxlFilterCopy인 경우 복사된 행의 위치입니다.

Unique : 고유한 레코드만 필터링 할 경우 True로 설정합니다.기본값은 False입니다.

현재 위치에 필터링

아래 코드는 성별이 여자인 데이터만 현재 위치에 필터링하는걸 매크로 기록하였습니다.

Sub 고급필터()
    '
    ' 고급필터 Macro
    '

    '
    Range("A1:E11").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("G1:G2"), Unique:=False
End Sub

다른 범위에 출력하기

필터링한 결과를 다른 범위에 출력하는 매크로 기록한 코드입니다.

Sub 고급필터()
'
' 고급필터 Macro
'

'
   
    Range("A1:E11").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "Sheet1!Criteria"), CopyToRange:=Range("G4"), Unique:=False
End Sub

약간 다듬은 코드입니다.

Sub 고급필터()

' 고급 필터 매크로

    Dim SourceRange As Range
    Dim CriteriaRange As Range
    Dim DestinationRange As Range

    ' 데이터 범위, 기준 범위 및 대상 범위 설정
    Set SourceRange = Worksheets("Sheet1").Range("A1:E11")
    Set CriteriaRange = Worksheets("Sheet1").Range("Criteria")
    Set DestinationRange = Worksheets("Sheet1").Range("G4")

    ' 고급 필터 기능 실행
    SourceRange.AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=CriteriaRange, _
        CopyToRange:=DestinationRange, _
        Unique:=False

End Sub

AND조건 사용하기

대여 기간이 7일 이상이고 등급이 "G"인 영화를 출력하는 예제입니다.

범위만 다를뿐 코드는 같습니다.

Sub 고급필터()
'
' 고급필터 Macro
'

'
    
    Range("A1:E971").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "G1:H2"), CopyToRange:=Range("G4"), Unique:=False
End Sub

OR 조건 사용하기

등급이 "PG-13"이거나 "R"인 영화를 필터링하는 매크로입니다

Sub 고급필터()
'
' 고급필터 Macro
'

'
    
    Range("A1:E971").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "G1:G3"), CopyToRange:=Range("G5"), Unique:=False
End Sub

AND,OR 동시에 사용하기

등급이 'G'이고 대여 기간이 7일 이상이거나 등급이 'PG-13'이고 대여 기간이 3일 이하인 영화만 추출하는 매크로입니다.

Sub 고급필터()
'
' 고급필터 Macro
'

'
    
    Range("A1:E971").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "G1:H3"), CopyToRange:=Range("G5"), Unique:=False
End Sub

Unique인수 사용하기

BowlerCity열에서 고유한 항목만 추출합니다.

Sub 고급필터()
'
' 고급필터 Macro
'

'
    
    Range("E1:E33").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
        "H1"), Unique:=True
End Sub