【Excel VBA】シートを行単位で複数のシートに自動分割する方法
計算や管理をしやすくするために、1枚のExcelシートを行を基準に複数のシートへ分割したい場面は少なくありません。本記事では、Microsoft Excel VBAのコードを使って、シートを指定した行数ごとに自動的に分割する方法を、具体例とともにわかりやすく解説します。
練習用ワークブック
以下のワークブックをダウンロードして、実際に手を動かしながら練習してみましょう。
VBAでExcelシートを行ごとに複数のシートへ分割する
VBA(Visual Basic for Applications)は、Microsoft Excelで最も広く使われているプログラミング言語のひとつです。ユーザー定義関数の作成や定型作業の自動化に活用でき、学習難易度も低いため初心者でも取り入れやすいのが特徴です。
分割対象となるシートの概要
ここでは、Sheet1に従業員名と労働時間のデータセット(B4:C10)が入力されているものとします。このシートを複数のシートに分割し、各シートに2行ずつデータが含まれるようにしていきます。

ステップ1:VBAウィンドウを起動する
- まず、シート見出しから対象のワークシートを選択します。
- 次に、シート見出し上で右クリックします。
- 表示されたメニューから「コードの表示(View Code)」をクリックします。

ステップ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キーを押してコードを実行します。

ステップ3:マクロを選択して実行する
- マクロ確認用の「マクロ(Macros)」ダイアログが表示されます。
- 一覧から対象のマクロ(SplitSheet)を選択し、「実行」をクリックします。

ステップ4:データ範囲を指定する
- 「ExcelSplit Range」というダイアログボックスが表示されたら、分割したいデータの範囲を指定して「OK」をクリックします。

ステップ5:各シートに表示する行数を指定する
- 続いて表示される「ExcelSplit Row Number Split」ダイアログに、1シートあたりの行数を入力して「OK」をクリックします。ここでは例として「2」を入力します。

最終結果:行ごとに分割された複数のシート
- 処理が完了すると、元のシートが複数のシートに自動分割され、各シートに2行ずつのデータが格納されていることが確認できます。

関連記事: 列の値に基づいてExcelシートを複数のシートに分割する方法
まとめ
今回紹介したMicrosoft Excel VBAのコードを使えば、大量のデータが入ったシートでも、指定した行数ごとに簡単かつ自動的に複数のシートへ分割できます。手作業でのコピーや貼り付けが不要になるため、業務効率化にも大きく役立ちます。記事内の練習用ワークブックをダウンロードして、ぜひ実際に試してみてください。不明点や新しい手法のご提案があれば、お気軽にお寄せください。
関連記事
- Excelで画面を分割する方法(3選)
- Excelでシートを分ける6つの効果的な方法
- Excelシートを複数ファイルに分割する3つのクイックな方法
- Excelでシートを別々のブックに分割する4つの方法
- VBAコードでブックを個別のExcelファイルに分割する方法
-
ExcelでCSVファイルを複数のシートに結合する方法(初心者向けかんたん手順)
Excelで作業をしていると、複数のCSVファイルを同時に扱わなければならない場面によく出くわします。そうしたCSVファイルを1つのワークブックにまとめたいというニーズは非常に頻繁に発生します。この記事では、ExcelでCSVファイルを複数のシートに結合するための手順を、ステップごとにわかりやすく解説します。 サンプルのCSVファイルと、結合後の完成ワークブックはこちらから無料でダウンロードできます。 CSVソースファイル: 結合後の最終ファイル: CSVファイルを複数のExcelシートに結合する手順 ここでは例として、6年生・7年生・8年生それぞれの生徒の各教科の成績表が、3つ
-
Excelで複数のCSVファイルを1つのワークブックにまとめる3つの簡単な方法
Excelは、大量のデータを扱う際に最も広く活用されているツールです。表計算から分析まで多彩な作業をこなせる万能ソフトですが、本記事では複数のCSVファイルを1つのExcelワークブックに結合する方法を、初心者にもわかりやすく解説します。 Excelで複数のCSVファイルを1つのワークブックに結合する3つの方法 CSVとは「Comma Separated Values(カンマ区切り値)」の略で、データを表形式で保存できる軽量なファイル形式です。テキストベースのため、パソコンのストレージ容量をほとんど消費しないのもメリットです。ここでは、デスクトップ上にあるCSVファイル2つが入ったフォルダを例