Skip to main content

Excel 팁: 열 값에 따라 데이터를 여러 워크시트 / 워크북으로 분할하기

Author: Xiaoyang Last Modified: 2025-05-20

Excel에서 대규모 데이터 세트를 관리할 때 특정 열 값에 따라 데이터를 여러 워크시트로 분할하는 것이 매우 유용할 수 있습니다. 이 방법은 데이터의 조직을 개선할 뿐만 아니라 가독성을 향상시키고 더 쉬운 데이터 분석을 가능하게 합니다.

예를 들어, 제품 이름과 1분기 판매량 등 여러 항목을 포함한 대규모 판매 기록이 있다고 가정해 보겠습니다. 목표는 이 데이터를 각 제품 이름별로 별도의 워크시트로 분할하여 개별 판매 성과를 별도로 분석할 수 있도록 하는 것입니다.

열 값에 따라 데이터를 여러 워크시트로 분할하기

VBA 코드를 사용하여 열 값에 따라 데이터를 여러 워크북으로 분할하기

Split data into multiple worksheets based on column value


열 값에 따라 데이터를 여러 워크시트로 분할하기

일반적으로 데이터 목록을 먼저 정렬한 다음 하나씩 새 워크시트에 복사하여 붙여넣을 수 있습니다. 하지만 이 과정은 반복적인 작업을 필요로 하며 인내심을 요구합니다. 이 섹션에서는 두 가지 간단한 방법을 소개하여 시간을 절약하고 오류 가능성을 줄이는 동시에 효율적으로 이 작업을 처리하는 방법을 안내합니다.

VBA 코드를 사용하여 열 값에 따라 데이터를 여러 워크시트로 분할하기

1. ALT + F11 키를 눌러 Microsoft Visual Basic for Applications 창을 엽니다.

2. 삽입 > 모듈을 클릭하고 모듈 창에 다음 코드를 붙여넣습니다.

Sub Splitdatabycol()
'updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
Dim xWS As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. 그런 다음, F5 키를 눌러 코드를 실행하면 머리글 행을 선택하라는 메시지 상자가 나타납니다. 그런 다음, 확인을 클릭하세요. 스크린샷 보기:
split data into worksheets with vba code to select header row

4. 두 번째 메시지 상자에서 분할 기준으로 사용할 열 데이터를 선택한 후, 확인을 클릭하세요. 스크린샷 보기:
split data into worksheets with vba code to select data range

5. 활성 워크시트의 모든 데이터가 열 값에 따라 여러 워크시트로 분할됩니다. 결과 워크시트는 분할된 셀의 값에 따라 이름이 지정되며 워크북의 끝에 배치됩니다. 스크린샷 보기:
split data into worksheets with vba code to get the result

 

Kutools for Excel을 사용하여 열 값에 따라 데이터를 여러 워크시트로 분할하기

Kutools for Excel은 스마트한 기능인 Split Data를 Excel 환경에 바로 제공합니다. 데이터를 여러 워크시트로 분할하는 것은 더 이상 어려운 일이 아닙니다. 직관적인 도구는 선택한 열 값 또는 행 수에 따라 데이터 세트를 자동으로 나누어 각 정보가 필요한 위치에 정확히 배치되도록 합니다. 수작업으로 스프레드시트를 정리하는 번거로움을 잊고 더 빠르고 오류 없는 데이터 관리 방식을 경험하세요.

참고: 이 Split Data 기능을 적용하려면 먼저 Kutools for Excel을 다운로드한 후 기능을 빠르고 쉽게 적용해야 합니다.

Kutools for Excel 설치 후 데이터 범위를 선택하고 Kutools Plus > Split Data를 클릭하여 여러 워크시트로 데이터 분할 대화 상자를 엽니다.

  1. Split based on 섹션에서 특정 열 옵션을 선택하고 드롭다운 목록에서 데이터를 분할할 열 값을 선택합니다.
  2. 데이터에 머리글이 포함되어 있고 새로 분할된 워크시트에 이를 삽입하려면 My data has headers 옵션을 체크하세요. (데이터에 따라 머리글 행 수를 지정할 수 있습니다. 예를 들어 데이터에 두 개의 머리글이 포함된 경우 2를 입력하세요.)
  3. 그런 다음 New worksheets name 섹션에서 워크시트 이름 규칙을 Rules 드롭다운 목록에서 지정할 수 있습니다. 접두사나 접미사를 시트 이름에 추가할 수도 있습니다.
  4. 클릭 확인 버튼. 스크린샷 보기:
    split data into worksheets with kutools to set the operations

이제 워크시트의 데이터가 새 워크북의 여러 워크시트로 분할되었습니다.
split data into worksheets with kutools to get the result


VBA 코드를 사용하여 열 값에 따라 데이터를 여러 워크북으로 분할하기

때때로 데이터를 여러 워크시트로 분할하는 대신 주요 열을 기준으로 데이터를 별도의 워크북으로 분할하는 것이 더 유리할 수 있습니다. 여기에서는 VBA 코드를 사용하여 특정 열 값에 따라 데이터를 여러 워크북으로 분할하는 과정을 자동화하는 단계별 가이드를 제공합니다.

1. ALT + F11 키를 눌러 Microsoft Visual Basic for Applications 창을 엽니다.

2. 삽입 > 모듈을 클릭하고 모듈 창에 다음 코드를 붙여넣습니다.

Sub SplitDataByColToWorkbooks()
    ' Updateby Extendoffice
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    Dim xTRg As Range
    Dim xVRg As Range
    Dim xWS As Workbook
    Dim savePath As String
    ' Set the directory to save new workbooks
    savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
    Application.DisplayAlerts = False
    Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", Type:=8)
    If TypeName(xTRg) = "Nothing" Then Exit Sub
    Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", Type:=8)
    If TypeName(xVRg) = "Nothing" Then Exit Sub
    vcol = xVRg.Column
    Set ws = xTRg.Worksheet
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = xTRg.Address(False, False)
    titlerow = xTRg.Row
    ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
    myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
    ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
    For i = 2 To UBound(myarr)
        Set xWS = Workbooks.Add
        ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
        ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
        xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
        xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"

        xWS.Close SaveChanges:=False
    Next i
    ws.AutoFilterMode = False
    Application.DisplayAlerts = True
    ws.Activate
End Sub
참고: 위의 코드에서 분할된 워크북을 저장할 경로를 자신의 경로로 변경해야 합니다. savePath = "C:\Users\AddinsVM001\Desktop\multiple files\".

3. 그런 다음, F5 키를 눌러 코드를 실행하면 머리글 행을 선택하라는 메시지 상자가 나타납니다. 그런 다음, 확인을 클릭하세요. 스크린샷 보기:
split data into workbooks with vba code to select header row

4. 두 번째 메시지 상자에서 분할 기준으로 사용할 열 데이터를 선택한 후, 확인을 클릭하세요. 스크린샷 보기:
split data into workbooks with vba code to select data range

5. 분할 후 활성 워크시트의 모든 데이터가 열 값에 따라 여러 워크북으로 분할됩니다. 분할된 모든 워크북은 지정한 폴더에 저장됩니다. 스크린샷 보기:
split data into workbooks with vba code to get the result

관련 기사:

  • 행 수에 따라 데이터를 여러 워크시트로 분할하기
  • 대규모 데이터 범위를 특정 행 수에 따라 여러 Excel 워크시트로 효율적으로 분할하면 데이터 관리를 간소화할 수 있습니다. 예를 들어, 데이터 세트를 5개의 행마다 여러 시트로 분할하면 더 관리하기 쉽고 정리된 상태를 유지할 수 있습니다. 이 가이드에서는 이 작업을 신속하고 쉽게 수행할 수 있는 두 가지 실용적인 방법을 제공합니다.
  • 주요 열을 기준으로 두 개 이상의 테이블을 하나로 병합하기
  • 워크북에 세 개의 테이블이 있다고 가정해 보겠습니다. 이제 해당 키 열을 기준으로 이러한 테이블을 하나의 테이블로 병합하여 아래 스크린샷과 같은 결과를 얻으려고 합니다. 이는 대부분의 사람들에게 번거로운 작업일 수 있지만 걱정하지 마세요. 이 문서에서는 이 문제를 해결하기 위한 몇 가지 방법을 소개하겠습니다.
  • 구분 기호를 기준으로 텍스트 문자열을 여러 행으로 분할하기
  • 일반적으로 특정 구분 기호(쉼표, 점, 세미콜론, 슬래시 등)를 기준으로 셀 내용을 여러 열로 분할하기 위해 Text to Column 기능을 사용할 수 있습니다. 그러나 때로는 구분 기호로 분리된 셀 내용을 여러 행으로 분할하고 다른 열의 데이터를 반복해야 할 수 있습니다. 아래 스크린샷과 같이 Excel에서 이 작업을 처리하는 좋은 방법이 있을까요? 이 튜토리얼에서는 Excel에서 이 작업을 완료하는 효과적인 방법을 소개합니다.
  • 여러 줄의 셀 내용을 분리된 행/열로 분할하기
  • Alt + Enter로 구분된 여러 줄의 셀 내용이 있고 이를 분리된 행 또는 열로 분할해야 한다고 가정해 보겠습니다. 어떻게 해야 할까요? 이 문서에서는 여러 줄의 셀 내용을 분리된 행 또는 열로 빠르게 분할하는 방법을 배우게 됩니다.

최고의 오피스 생산성 도구

? Kutools AI Aide: 지능형 실행, 코드 생성, 사용자 정의 수식 작성, 데이터 분석 및 차트 생성, Kutools 함수 호출을 기반으로 데이터 분석 혁신…
인기 기능: 중복 찾기, 강조 또는 식별   |  빈 행 삭제   |  데이터 손실 없이 열 또는 셀 결합   |   수식 없이 반올림 ...
슈퍼 LOOKUP: 다중 조건 VLookup    다중 값 VLookup  |   다중 시트 조회   |   퍼지 매치 ....
고급 드롭다운 목록: 빠르게 드롭다운 목록 만들기   |  종속 드롭다운 목록   |  다중 선택 드롭다운 목록 ....
열 관리자: 특정 개수의 열 추가  |  열 이동  |  숨겨진 열의 가시성 상태 전환  |  범위 및 열 비교 ...
주요 기능: 그리드 포커스   |  디자인 보기   |   향상된 수식 표시줄    통합 문서 및 시트 관리자   |  자동 텍스트 라이브러리 (Auto Text)   |  날짜 선택기   |  데이터 병합   |  셀 암호화/해독    목록으로 이메일 보내기   |  슈퍼 필터   |   특수 필터 (굵은 글꼴/이탤릭체/취소선 필터링...) ...
최고의 15가지 도구 모음12개의 텍스트 도구 (텍스트 추가, 특정 문자 삭제, ...)   |   50+ 차트 유형 (간트 차트, ...)   |   40+ 실용적인 수식 (생일을 기반으로 나이 계산, ...)   |   19개 삽입 도구 (QR 코드 삽입, 경로에서 그림 삽입, ...)   |   12개 변환 도구 (단어로 변환하기, 통화 변환, ...)   |   7개 병합 및 분할 도구 (고급 행 병합, 셀 분할, ...)   |   ... 그리고 더 많은 기능들

Kutools for Excel로 엑셀 스킬을 강화하고 지금까지 경험하지 못한 효율성을 체험하세요. Kutools for Excel은 생산성을 향상시키고 시간을 절약할 수 있는 300개 이상의 고급 기능을 제공합니다.  가장 필요한 기능을 얻으려면 여기를 클릭하세요...


Office Tab은 탭 인터페이스를 Office에 제공하여 작업을 훨씬 쉽게 만듭니다.

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기를 활성화하세요.
  • 새 창 대신 동일한 창의 새 탭에서 여러 문서를 열고 생성하세요.
  • 생산성을 50% 향상시키고 매일 수백 번의 마우스 클릭을 줄입니다!