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
반응형
'컴퓨터 & 코딩 공부 > 엑셀 & VBA' 카테고리의 다른 글
엑셀 VBA 기본기능 정리 - 특정 값이 배열에 포함되는지 확인하기 (0) | 2023.11.16 |
---|---|
엑셀 VBA 기본기능 정리 - 중복데이터 처리 (0) | 2023.07.09 |
엑셀 VBA 기본기능 정리 - Cells/Range 관련 속성 및 메서드 (0) | 2023.07.06 |
엑셀 VBA 기본기능 정리 - 시트 관련 속성 및 메서드 (0) | 2023.07.05 |
엑셀 VBA 기본기능 정리 - 정규표현식 활용 (0) | 2023.07.04 |