AdvancedFilter Method
기준 범위에 따라 목록에서 데이터를 필터링하거나 복사합니다.
문법은 다음과 같습니다.
Syntax
expression.AdvancedFilter (Action, CriteriaRange, CopyToRange, Unique)
Action : 복사할지 필터링할지 지정합니다. Action만 필수고 나머지는 옵션입니다.
XlFilterAction 열거형 값을 사용합니다.
XlFilterAction enumeration (Excel)
Office VBA reference topic
learn.microsoft.com
CriteriaRange : 조건 범위입니다.
CopyToRange :Action이 xlFilterCopy인 경우 복사된 행의 위치입니다.
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
'Range object' 카테고리의 다른 글
[Range개체] - NumberFormat속성과 NumberFormatLocal속성 (0) | 2023.07.16 |
---|---|
[Range 개체] 셀 병합과 관련된 속성과 메서드 (0) | 2023.07.15 |
[Range 개체] Areas속성 (0) | 2023.07.10 |
[Range 개체] End속성 (0) | 2023.07.09 |
[Range 개체] EntireColumn속성 (0) | 2023.07.09 |