Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

대량의 데이터를 다루다 보면 계산이나 관리의 편의를 위해 하나의 엑셀 시트를 행 단위로 나누어 여러 시트에 저장해야 하는 경우가 종종 있습니다. 이 글에서는 마이크로소프트 엑셀 VBA 코드를 활용해 이 작업을 손쉽게 처리하는 방법을 예제와 함께 단계별로 자세히 알아보겠습니다.

연습용 워크북

아래 워크북을 내려받아 직접 따라 해 보세요.

VBA로 엑셀 시트를 행 기준으로 여러 시트로 분할하기

VBA(Visual Basic for Application)는 마이크로소프트 엑셀에서 가장 널리 사용되는 프로그래밍 언어 중 하나입니다. 사용자 지정 함수를 만들거나 반복 작업을 자동화할 때 매우 유용하며, 배우기 쉽고 적용 방법도 간단합니다.

분할할 시트 데이터 소개

예시로 Sheet1에 직원별 근무 시간 데이터(B4:C10)가 입력되어 있다고 가정해 보겠습니다. 이 시트를 여러 개의 시트로 분할하고, 각 시트에는 두 개의 데이터 행이 들어가도록 설정해 보겠습니다.

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

1단계: VBA 편집기 창 열기

  • 먼저 시트 탭에서 해당 워크시트를 선택합니다.
  • 시트 이름을 마우스 오른쪽 버튼으로 클릭합니다.
  • 메뉴에서 코드 보기(View Code)를 클릭합니다.

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

2단계: VBA 코드 입력 및 실행

  • VBA 모듈 창이 열립니다. 키보드 단축키 'Alt + F11'을 눌러서도 열 수 있습니다.
  • 아래 코드를 그대로 입력합니다.
Sub SplitSheet()
Dim Rng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xSheet As Worksheet
On Error Resume Next
xTitleId = "ExcelSplit"
Set Rng = Application.Selection
Set Rng = Application.InputBox("Range", xTitleId, Rng.Address, Type:=8)
SplitRow = Application.InputBox("Row Number Split", xTitleId, 5, Type:=1)
Set xSheet = Rng.Parent
Set xRow = Rng.Rows(1)
Application.ScreenUpdating = False
For i = 1 To Rng.Rows.Count Step SplitRow
resizeCount = SplitRow
If (Rng.Rows.Count - xRow.Row + 1) < SplitRow Then resizeCount = Rng.Rows.Count - xRow.Row + 1
xRow.Resize(resizeCount).Copy
Application.Worksheets.Add after:=Application.Worksheets(Application.Worksheets.Count)
Application.ActiveSheet.Range("A1").PasteSpecial
Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
  • 입력 후 실행(Run) 버튼을 클릭하거나 F5 키를 눌러 코드를 실행합니다.

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

3단계: 매크로 선택 후 실행

  • 매크로(Macros) 확인 창이 나타납니다.
  • 목록에서 해당 시트 이름을 선택한 뒤 실행(Run)을 클릭합니다.

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

4단계: 데이터 범위 지정

  • ExcelSplit Range 대화상자에서 분할할 데이터 범위를 지정한 후 확인(OK)을 누릅니다.

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

5단계: 시트당 표시할 행 수 입력

  • 다음으로 ExcelSplit Row Number Split 대화상자에 한 시트에 담길 행 수를 입력하고 확인(OK)을 클릭합니다. 여기서는 '2'를 입력했습니다.

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

최종 결과 확인

  • 실행이 완료되면 원본 시트가 여러 개의 시트로 나뉘며, 각 시트에 두 개의 데이터 행씩 배치된 것을 확인할 수 있습니다.

엑셀 VBA 매크로로 행 기준 시트를 여러 개로 자동 분할하는 방법

함께 읽으면 좋은 글: 열 값 기준으로 엑셀 시트를 여러 시트로 분할하는 방법

마무리

이처럼 엑셀 VBA 코드를 활용하면 복잡한 수작업 없이도 시트를 행 기준으로 몇 초 만에 여러 시트로 분할할 수 있습니다. 위 연습용 워크북을 다운로드하여 직접 실습해 보세요. 궁금한 점이 있거나 새로운 방법을 제안하고 싶으시다면 언제든지 댓글로 알려주세요.

관련 글

  • 엑셀에서 화면 분할하는 방법 (3가지)
  • 엑셀에서 시트 분리하기 (6가지 효과적인 방법)
  • 엑셀 시트를 여러 파일로 분할하는 방법 (3가지 빠른 방법)
  • 엑셀에서 시트를 별도 통합 문서로 분리하기 (4가지 방법)
  • VBA 코드로 통합 문서를 개별 엑셀 파일로 나누는 방법