티스토리 뷰

Excel VBA/VBA 예제

고급필터 예제

KyeongRok Kim 2017. 4. 3. 11:29
고급필터 예제
Sub main_advanced()
    Call advancedFilter
End Sub
Sub advancedFilter()
    끝열주소 = get컬럼주소(get가로개수("filter"))
    Sheets("filter").Range("a9:" & 끝열주소 & "10000").ClearFormats
    Sheets("raw_data").Range("A1").CurrentRegion.advancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("filter").Range("A1").CurrentRegion, CopyToRange:=Range("A8:" & 끝열주소 & "8"), Unique:=False
End Sub

Function get컬럼주소(p_colno)
    get컬럼주소 = Split(Cells(, p_colno).Address, "$")(1)
End Function

Function get가로개수(p_시트명)
    columnCount = Sheets(p_시트명).Range("A1").CurrentRegion.Columns.Count
    get가로개수 = columnCount
End Function

 

위 예제는 컬럼명 주소를 필터 시트가 어떤것인지에 따라 동적으로 바꿔준다. 

Sub advancedFilter(db시트명, filter시트명)
    filter시트columns = Sheets(filter시트명).Range("a1").CurrentRegion.Columns.Count
    filter_column_name_addr = Sheets(filter시트명).Range(Sheets(filter시트명).Cells(8, 1), Sheets(filter시트명).Cells(8, filter시트columns)).Address
        
    Sheets(db시트명).Range("A1").CurrentRegion.advancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets(filter시트명).Range("A1").CurrentRegion, CopyToRange:=Range( _
        filter시트명 & "!" & filter_column_name_addr), Unique:=False
End Sub
 

위 예제는 컬럼 개수 세는 기능을 function으로 분리한 고급필터 예제이다.

 

 

end.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함