728x90
고급필터 AdvancedFilter
고급필터로 조건 찾는 것은 이거 하나면 복사하는 건 제대로 해결할 수 있도록 만들었습니다.
범위값만 변경하고 조건만 지정하면 원하는 결과가 바로 찾아집니다.
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
위의 VBA코드를 적용하면 원하는 결과를 뽑아낼 수가 있습니다.
파일 다운로드 받아서 엑셀화면에서 Alt + F11 누르면 팝업되는 창의 메뉴에서 [삽입]- [모듈] 선택하여
이코드를 붙여넣기 하고 붉은색으로 표시된 부분을 수정하면 됩니다.
Range("A5").CurrentRegion.Clear 이 부분이 AutoFilter를 적용할 때와 다른 점은
Range("A5").CurrentRegion.Offset(1).Clear 제목행 아래 데이터만 전부 삭제하라고 하는데
고급필터에서는 제목행까지 모두 지워줘야 제대로 동작합니다.
데이터가 있는 시트와 결과를 표출할 시트까지 직접 지정하도록 한 것은 다른 시트에 있을때도 이상없이 동작되도록 하기 위함입니다.
검색할 조건영역은
제목과 필터를 걸 조건을 다중으로 선택할 수 있습니다.
검색조건은 반드시 위 그림처럼 두행으로 표시해서 조건이 많으면 열을 늘려줘야 합니다.
728x90
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
음력 - 양력 변환 VBA (0) | 2014.05.14 |
---|---|
[VBA] 주소에서 중복부분만 제거하고 싶을 때 (0) | 2014.03.07 |
AverageIF 함수를 사용하여 과목별 평균값 구하는 VBA (0) | 2014.02.18 |
특정 전화번호만 추출하기 (3) | 2014.02.16 |
[VBA] 최대값 셀에 배경색 지정 (0) | 2014.02.12 |