블로그 이미지
이비그치면

태그목록

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

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

엑셀에서 필터를 사용하는 경우가 종종 있다
데이타 건수가 많을 때 필터를 적용하여

1) 데이타의 경우의 수를 확인할 수 있다

2)사용자가 원하는  특정 경우의 데이타만을 뽑아서 보고자 하는 경우 유용하게 
사용할 수 있다


- 필터를 적용하는 방법
   . 데이타가 있는 행의 셀중 임의의 셀 하나를 선택한다
   . 데이타 탭의 필터 아이콘을 누른다
   . 데이타 타이틀에 드롭다운 아이콘이 나타난다
   . 드롭다운아이콘을 눌러 원하는 값을 찾아 적용한다

- 필터를 해제하는방법
   . 데이타 탭의 필터 아이콘을 누른다(토글방식으로 해제와 적용이 번갈아 적용된다) 

이런 필터의 기능을 VBA에서 이용하는 방법을 소개한다

1)  중복데이타제거



아래의 코드를 VBA창에서 실행시키면
좌측에 있는 데이타에서 중복이 제거된 결과가
우측 그림과 같이 나타난다

Sub RemoveDupes()

Columns(1).EntireColumn.Insert '같은 데이타 제거후 결과를 넣기 위해 Column 추가
Range("B1", Range("B65536").End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=Range("A1"), _
Unique:=True '중복값을 제거하고 결과를 A열에 넣는다
'Columns(2).EntireColumn.Delete '원데이타열을 삭제한다

End Sub

2) 조건충족데이타 추출



아래의 코드를 VBA창에서 실행시키면
그림의 중간에 있는 데이타에서 좌측에 입력한 추출조건에 의해
추출된 결과가 우측의 결과물과 같이 나타난다

Sub ExtractSame()
Dim CritRng As String
Sheets("Sheet1").Activate
CritRng = "A1:C3"
CritRng = Range(CritRng).Address  '필터링기준값이 들어갈 범위는 절대주소

Range("E1", "G12").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range(CritRng), _
CopyToRange:=Range("K1", "M1"), _
Unique:=False

End Sub


※※  코드에서  빨간색으로 되어있는 것에 주의  추출조건을 입력하는 범위는
        절대주소이어야 한다
        1행은 데이타의 타이틀과 같이 타이틀이 들어가야한다
        2행부터 추출조건 입력
        같은 라인은 AND, 다른 라인은 OR