'시트별로 분리 저장'에 해당되는 글 1건

728x90


AutoFilter로 시트별로 분리 저장


구분자별로 필터를 사용하여 시트별로 분리 저장하고자 할 경우 사용하는 VBA Code 입니다.

여기서의 키포인트는 Range.AutoFilter 메서드 입니다.


expression.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)

- Field : 목록의 맨 왼쪽 필드가 1번 필드

- Criteria1 : 찾을 조건,  공백 필드 조건은 "=" 사용, 공백필드 아닌 조건은 "<>", 지정하지 않으면 모든 필터

- Operator : 필터의 종류를 지정하는 XlAutoFilterOperator 상수 중 하나


Criteria2 : 두번째 찾을 조건

- VisibleDropDown : False이면 필터링된 필드에서 자동 필터 드롭다운 화살표를 숨김

                         True이면 필터링된 필드에서 자동 필터 드롭다운 화살표를 표시


Option Explicit
Sub AutoFilter_Sheet_Split()
    Dim rngAll As Range    '// 전체 범위 지정 변수
    Dim rngC As Range
    Dim i As Integer

    Application.ScreenUpdating = False    '// 화면 업데이트 (일시) 중지
    Set rngAll = Range("A1").CurrentRegion '// A1 열과 연결된 인접셀 영역
    Set rngC = rngAll.Columns(1) '// 전체범위에서 선택할 열 1은 A열
    Set rngAll = rngAll.Rows(2).Resize(rngAll.Rows.Count - 1)
    '// A2 행부터 범위 재지정

    For i = 2 To Worksheets.Count   '// 2번째 시트부터 전체 시트만큼 순환
        With Worksheets(i)  '// 해당 시트명, 2번째, 3번째,,,,
             rngC.AutoFilter 1, .Name, , , False     '// 숫자1은 A열 필터
             '// .Name 은 시트명 이름. 따라서 시트명 이름과 동일한 것을 필터함
             '// .Name 은 Worksheets(i).Name 을 의미
             rngAll.Copy .Cells(Rows.Count, 1).End(3)(2)
             '// 필터된 값을 해당 시트(Worksheets(i))의 마지막 값이 들어있는 아래행에 복사하라
        End With
    Next i
   
    rngC.AutoFilter     '// 자동필터 해제
    Application.ScreenUpdating = True

End Sub

Sub AutoFilter_Copy()
    Dim rngAll As Range
    Dim rngC As Range
    Dim CateName
   
    CateName = InputBox("구분자를 입력하세요")
    Application.ScreenUpdating = False      '// 화면 업데이트 (일시) 중지
    Set rngAll = Range("A1").CurrentRegion '// A1 열과 연결된 인접셀 영역
    Set rngC = rngAll.Columns(1) '// 전체범위에서 선택할 열 1은 A열
    Set rngAll = rngAll.Rows(2).Resize(rngAll.Rows.Count - 1)
    '// A2 행부터 범위 재지정
   
    With Worksheets("연습")  '// 해당 시트명 직접 입력
        rngC.AutoFilter 1, CateName, , , False     '// 숫자1은 A열 필터
         '// 현재 시트(ActiveSheet)에서 CateName 만 자동 선별
         rngAll.Copy .Cells(Rows.Count, 1).End(3)(2)
         '// 자동 필터된 값을 연습 시트의 마지막 값이 들어있는 아래행에 복사하라
    End With
       
   rngC.AutoFilter  '// 자동필터 해제
   Application.ScreenUpdating = True
End Sub


위 VBA Code 입니다. 필요하신 분은 받아가세요.


구분자별자동필터로분리.vbs



vbs 첨부파일은 텍스트에디터로 열어서
엑셀에서 Alt + F11 눌러서 나오는 VBA Editor 창에서
[삽입] - [ 모듈] 눌러서 생성되는 화면에다가
붙여넣기를 하면 됩니다.


블로그 이미지

Link2Me

,