엑셀에서 컬럼 데이터로 시트 구분후 각각시트를 따로 파일로 저장하기

  1. 엑셀파일에서 ALT + F11 을 눌러 Visual Basic for Applications 을 연다

  2. 프로젝트 윈도우( 왼쪽상단 ) 에서 마우스 오른쪽 클릭 후 삽입 -> 모듈을 선택해 module 1 을 생성한다

  3. 열린 module 1 윈도우에

    Sub split_Sheet()
    ​
     Dim rng As Range
     Dim colsCnt As Integer
     Dim colNm As String
     Dim Imsi
     Dim sht As Long
    
     Application.ScreenUpdating = False
     For sht = Sheets.Count To 2 Step -1
         Application.DisplayAlerts = False
         Sheets(sht).Delete
         Application.DisplayAlerts = True
     Next sht
     colNm = InputBox("시트로 분리할 필드의 열 머리글을 입력해 주세요.", "필드 머리글 입력")
    
     Set rng = ActiveSheet.UsedRange
     colsCnt = rng.Columns.Count
    
     rng.Columns(colNm).AdvancedFilter Action:=2, _
         CopyToRange:=Cells(1, colsCnt + 1), Unique:=1
    
     Imsi = Range(Cells(2, colsCnt + 1), Cells(Rows.Count, colsCnt + 1).End(3))
    
     For sht = 1 To UBound(Imsi, 1)
         Sheets.Add After:=Sheets(Sheets.Count)
         ActiveSheet.Name = Imsi(sht, 1)
     Next sht
    
     Sheets(1).Activate
    
     For sht = 1 To UBound(Imsi, 1)
         Cells(2, colsCnt + 1) = Imsi(sht, 1)
         rng.AdvancedFilter Action:=2, CriteriaRange:=Cells(1, colsCnt + 1).Resize(2), _
         CopyToRange:=Sheets(sht + 1).Cells(1, 1), Unique:=0
         Sheets(sht + 1).Columns.AutoFit
     Next sht
     Columns(colsCnt + 1).Delete
     Set rng = Nothing
    End Sub

    위 코드를 붙어넣기한다, 만약 두번째 줄에 없던 Print가 생겼다면 지워주도록 한다.
    위 코드는 행의 데이터를 기준으로 새로운 워크 시트를 생성한다.

  4. 그리고 같은방법으로 module 2 를 생성한다 ( 마우스 우클릭 후 삽입 -> 모듈 )
    module2 에는

    Sub Splitbook()
    Dim xPath As String
    xPath = Application.ActiveWorkbook.Path
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each xWs In ThisWorkbook.Sheets
     xWs.Copy
     Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xlsx"
     Application.ActiveWorkbook.Close False
    Next
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub

    주의 !! MAC OS라면 8번째줄 "\""/"로 바꿔준다!!

    위 코드를 넣어준다. 이 코드는 분리된 워크 시트들을 각각새로운 파일들로 현재 폴더에 저장시키는 기능을 한다.

  5. 모듈 2개가 모두 완성되었다면, 상단의 재생버튼 ( ▶️ ) 을 눌러 모듈들을 실행시킨다.

  6. 실행을 누르면 split_sheet 와 Splitbook 중 선택하는 창이 나타난다. 그 중 split_sheet를 선택해 실행한다.

  7. 실행이 잘 되었다면, 인풋 창이 뜨는데 그곳에서 워크 시트를 나누게 될 기준이 되는 행의 순서 ( 라틴문자 A , B ,C ) 를 입력한다

    • 예) 첫번째 행: A 두번째: B
  8. 확인을 누르면, 정상적으로 나뉘어진 워크 시트들이 생성된다.

  9. 분리된 워크시트들이 생성이 되었다면, 다시 상단의 재생 버튼을 눌러 두번째 모듈 ( Splitbook ) 을 실행시킨다. 그러면 현재 파일이있는 폴더에 각각의 워크시트들이 독립된 파일들로 생성된다.