'고급필터 AdvancedFilter'에 해당되는 글 1건

728x90

고급필터 AdvancedFilter


고급필터로 조건 찾는 것은 이거 하나면 복사하는 건 제대로 해결할 수 있도록 만들었습니다.

범위값만 변경하고 조건만 지정하면 원하는 결과가 바로 찾아집니다.


Sub AdvancedFilter_test()
    Dim sht1, sht2 As Worksheet        '// 워크시트 변수
    Dim rngData As Range
    Dim rngIF As Range
    Dim rngTarget As Range

    Application.ScreenUpdating = False      '// 화면 업데이트 (일시) 중지
    Set sht1 = Sheets("workdata")    '// 원본 자료가 있는 데이터 시트
    Set sht2 = Sheets("Rec")    '// 결과를 보여줄 시트
    Range("A5").CurrentRegion.Clear    '// 필터를 포함한 기존 데이터를 전부 삭제
    Set rngData = sht1.Range("A1:J" & Rows.Count) '// 고급필터의 원본 영역
    Set rngIF = Range(sht2.[A2], sht2.[B3])   '// 고급필터의 검색조건
    Set rngTarget = sht2.Range("A5")     '// 결과값 표시할 영역
    
    With sht2  '// 해당 시트명 입력
        rngData.AdvancedFilter xlFilterCopy, rngIF, rngTarget
        '// rngData를 rngIF 조건으로 필터하여 rngTarget셀 이하에 나타내어라
    End With
    Columns.AutoFit  '// 열너비 자동 맞춤
    MsgBox "작업완료"
End Sub



고급필터.vbs


위의 VBA코드를 적용하면 원하는 결과를 뽑아낼 수가 있습니다.

파일 다운로드 받아서 엑셀화면에서 Alt + F11 누르면 팝업되는 창의 메뉴에서 [삽입]- [모듈] 선택하여

이코드를 붙여넣기 하고 붉은색으로 표시된 부분을 수정하면 됩니다.


Range("A5").CurrentRegion.Clear 이 부분이 AutoFilter를 적용할 때와 다른 점은

Range("A5").CurrentRegion.Offset(1).Clear  제목행 아래 데이터만 전부 삭제하라고 하는데

고급필터에서는 제목행까지 모두 지워줘야 제대로 동작합니다.


데이터가 있는 시트와 결과를 표출할 시트까지 직접 지정하도록 한 것은 다른 시트에 있을때도 이상없이 동작되도록 하기 위함입니다.


검색할 조건영역은



제목과 필터를 걸 조건을 다중으로 선택할 수 있습니다.

검색조건은 반드시 위 그림처럼 두행으로 표시해서 조건이 많으면 열을 늘려줘야 합니다.


블로그 이미지

Link2Me

,