Daily Life of BlueRose

컴퓨터 & 코딩 공부/엑셀 & VBA

엑셀 VBA 기본기능 정리 - VBA를 이용한 자동필터, 고급필터

푸른로즈 2023. 7. 9. 01:15
728x90

자동필터와 고급필터

※ VBA를 이용한 필터적용시 주의사항 :  자동필터를 새로 적용하기 전, 자동필터가 존재하는지 확인 후 필터를 풀어주어야 합니다. 그렇지 않은 경우, 자동필터 설정시 오류가 발생하거나 적용되지 않을 수 있습니다.

  • VBA를 이용한 자동필터
    • 기본형
      • 기존 자동필터 존재 확인 : 시트개체.AutoFilterMode = True/False
      • 자동필터 적용 : (범위 변수 rng에 대하여) rng.AutoFilter
      • 모든 데이터 보이기(초기화) : (시트변수 sh에 대하여) sh.FilterMode, sh.ShowAllData
      • 필터 적용 : rng.AutoFilter [열번호], Range(기준 데이터)
    • 활용예시
Dim sh As Worksheet
Dim rng As Range
   Set sh = Sheets(시트명)
   Set rng = Range("a1").CurrentRegion
      If sh.AutoFilterMode = False Then rng.AutoFilter   '자동필터 미적용시, 자동필터 적용
      If sh.FilterMode then sh.ShowAllData	   '자동필터 적용상태시, 필터링 기준 해제
rng.AutoFilter 2, Range("e2")   '필드 = 2, 기준 = Range("e2")
rng.SpecialCells(xlCellTypeVisible).Copy Range("a20")

 

 

 

  • VBA를 이용한 고급필터
    • 기본형 : rng.AdvancedFilter xlFiterAction, CiteriaRange, CopyToRange, Unique
      • xlFilterAction : 현재 위치에 필터 / 다른장소에 복사 여부
      • CriteriaRange : 조건셀
        • AND조건의 적용 : 동일한 열에 병렬의 행으로 입력
        • OR조건의 적용 : 동일한 행에 다른 열로 입력
        • 와일드카드 이용 : “*내용*”의 형태와 같이 *을 포함하여 입력
      • CopyToRange : 붙여넣을 셀
      • Unique : 동일한 레코드는 1회만 출력 옵션
    • 활용형(중복값제거)
Dim rng As Range    '고급필터로 중복값을 안보이게 한 후, 보이는 값만 다른 위치로 복사
    Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp))
rng.AdvancedFilter xlFilterInPlace, Unique:=1
rng.SpecialCells(xlCellTypeVisible).Copy Range(붙여넣을 범위)
ActiveSheet.ShowAllData
반응형