メインコンテンツへスキップ

Excelで各行ごとに新しいシートを作成するにはどうすればよいですか?

Author: Siluvia Last Modified: 2025-08-06

データ管理やレポート作成のタスクにおいて、テーブル内の各レコードを個別のワークシートに分ける必要がある場合があります。例えば、Excelで学生の詳細リストを管理している場合、各行が異なる学生の情報を表しているとします。その場合、すべての学生ごとに別々のシートを生成し、それぞれに特定のデータを含めたいと思うかもしれません。あるいは、内容に関係なくすべての行を分割して、それぞれを新しいワークシートに配置したい場合もあります。手動で新しいシートを作成してデータをコピーするのは時間がかかり、ミスも発生しやすいものです。特に大規模なデータセットを扱っている場合にはそうです。このプロセスを自動化することで、大幅な時間の節約ができ、ミスのリスクも軽減されます。このガイドでは、Excelで各行ごとに新しいシートを作成するための2つの実用的な解決策を紹介し、それぞれの方法の長所と短所について説明します。これにより、最適なアプローチを選択する助けとなります。

VBAコードを使用して各行ごとに新しいシートを作成する
Kutools for ExcelのSplit Dataユーティリティを使用して各行ごとに新しいシートを作成する


VBAコードを使用して各行ごとに新しいシートを作成する

VBA(Visual Basic for Applications)を使用することは、退屈で繰り返しの多いExcelタスクを自動化する効果的な方法です。VBAを使用すると、列に基づいて行をグループ化する(例えば、学生名など)か、または内容に関係なく各行ごとに新しいワークシートを迅速に作成できます。このアプローチは、VBAエディタに慣れ親しみ、高度にカスタマイズ可能なソリューションを好むユーザーにとって理想的です。ただし、コードの編集と実行が必要となるため、VBAの経験がないユーザー、または環境でマクロを実行する許可がないユーザーには適さない可能性があります。

1. 「Alt」+「F11」を押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。これにより、Excel操作を自動化するためのVBAコードにアクセスできます。

2. Microsoft Visual Basic for Applicationsウィンドウで、挿入 > モジュールをクリックして新しいコードモジュールを追加します。次に、以下のコードをモジュールウィンドウにコピー&ペーストします。

VBAコード:列に基づいて各行ごとに新しいシートを作成する

Sub parse_data()
'Update by Extendoffice 2018/3/2
    Dim xRCount As Long
    Dim xSht As Worksheet
    Dim xNSht As Worksheet
    Dim I As Long
    Dim xTRrow As Integer
    Dim xCol As New Collection
    Dim xTitle As String
    Dim xSUpdate As Boolean
    Set xSht = ActiveSheet
    On Error Resume Next
    xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
    xTitle = "A1:C1"
    xTRrow = xSht.Range(xTitle).Cells(1).Row
    For I = 2 To xRCount
        Call xCol.Add(xSht.Cells(I, 1).Text, xSht.Cells(I, 1).Text)
    Next
    xSUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    For I = 1 To xCol.Count
        Call xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
        Set xNSht = Nothing
        Set xNSht = Worksheets(CStr(xCol.Item(I)))
        If xNSht Is Nothing Then
            Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
            xNSht.Name = CStr(xCol.Item(I))
        Else
            xNSht.Move , Sheets(Sheets.Count)
        End If
        xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
        xNSht.Columns.AutoFit
    Next
    xSht.AutoFilterMode = False
    xSht.Activate
    Application.ScreenUpdating = xSUpdate
End Sub

パラメータの説明と使用上のヒント:

  • A1:C1はデータテーブルのヘッダー範囲です。必要に応じて、この参照を実際のデータヘッダー領域に合わせて調整してください。
  • このコードは指定された列(デフォルトでは列A)から一意の値を収集します。一意の値ごとに新しいワークシートが作成され、対応する行が含まれます。
  • テーブルがより広い範囲にある場合や、別の行から始まる場合は、xTitleおよびセル参照をそれに応じて更新してください。
  • ワークシートに他のシートを参照する数式が含まれている場合、分割後に参照を確認してください。

3. F5キーを押すか、または[実行]をクリックしてコードを実行します。新しいワークシートは現在のブック内のすべての既存シートの後に作成され、それぞれが選択した一意の列値に基づいて名前が付けられます。サンプル結果については、下のスクリーンショットを参照してください。

A screenshot showing a new workbook with sheets created from each row based on column value

列の内容に関係なく、すべての行を独自のワークシートに分割したい場合は、次の代替VBAコードを使用できます。これにより、列条件を指定する必要がなくなります。

VBAコード:直接的に各行ごとに新しいシートを作成する

Sub RowToSheet()
	Dim xRow As Long
	Dim I As Long
	With ActiveSheet
		xRow = .Range("A" & Rows.Count).End(xlUp).Row
		For I = 1 To xRow
			Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
			.Rows(I).Copy Sheets("Row " & I).Range("A1")
		Next I
	End With
End Sub

このコードをモジュールで実行すると、アクティブなワークシートからすべての行(ヘッダー行を含む)が新しく作成されたワークシートにコピーされます。ヘッダー行も複製されることに注意してください。これを回避したい場合は、出力シートを後で手動で削除または調整する必要があります。

トラブルシューティングと実用的なヒント:
- 「添字が範囲外です」というエラーが発生した場合、シート名に無効な文字や重複した名前がないか確認してください。
- 大規模なデータセットの場合、大量のシートが生成される可能性があり、それがExcelの動作を遅くしたり、ナビゲーションを困難にする可能性があります。非常に大きなテーブルの場合、行ごとに分割する必要があるかどうかを考慮してください。
- VBAコードを実行する前に、常にデータのバックアップを取って、意図しないデータ損失を防いでください。

利点: 無料;高度にカスタマイズ可能。
欠点: VBA/マクロが有効である必要があり、VBAエディタに多少の知識が必要;複雑なデータや異常なデータに対してコードエラーの可能性あり。
適している人: スクリプティングの柔軟性が必要なユーザー、および一度限りまたは不定期のタスクを行うユーザー。


Kutools for ExcelのSplit Dataユーティリティを使用して各行ごとに新しいシートを作成する

コードを書かずにシンプルで使いやすいアプローチを好む場合、Kutools for ExcelSplit Dataユーティリティをお勧めします。この機能は、数回のクリックだけでデータを新しいワークシートに分割するのに役立ち、ワークシートの管理プロセスを大幅に簡素化します。Kutoolsは、特に大規模で複雑なテーブルを頻繁に扱うユーザー、または手動コーディングよりもグラフィカルインターフェースを好むユーザーにとって有用です。なお、KutoolsはExcelアドインであり、事前にインストールしておく必要があります。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

1. 個別のワークシートに分割したいデータを含むテーブルを選択します。次に、Kutools Plusタブをクリックして、Split Dataを選択します。詳しくは下のスクリーンショットを参照してください。

A screenshot of the 'Split Data' option under the Kutools Plus tab in Excel

2. [複数のワークシートにデータを分割]ダイアログボックスで、分割要件に基づいて適切な設定を選択します。

A. 列の値に基づいて新しいシートを作成する:

1). [特定の列]オプションを選択し、分割の基準として使用したい列を指定します。通常、これは学生名やIDなどの一意の識別子です。
2). その列の値に基づいてシートに名前を付けたい場合は、[ルール]ドロップダウンメニューから[列の値]を選択します。
3). 分割を実行するために[OK]をクリックします。下のスクリーンショットを参照してください。

A screenshot of the 'Split Data into Multiple Worksheets' dialog box with settings for splitting by column value

B. 各行ごとに直接新しいシートを作成する:

1). 固定行オプションを選択し、各ワークシートに1行のデータのみを含めるように1を入力します。
2). [ルール]ドロップダウンで、[行番号]を選択して、各シートを行インデックスでラベル付けします。
3). 分割プロセスを開始するために[OK]をクリックします。下のスクリーンショットを参照してください。

A screenshot of the 'Split Data into Multiple Worksheets' dialog box with settings for splitting by row

実行後、選択した設定に基づいて新しいワークシートがすべて含まれる新しいワークブックが生成されます。

列の値に基づいて各行ごとに新しいシートを作成する:

A screenshot showing a new workbook with sheets created from each row based on column value

列の値を考慮せずに各行ごとに新しいシートを作成する:

A screenshot showing a new workbook with sheets created from each row without considering the column value

注意点と実用的なヒント:
- Split Dataユーティリティを使用する前に、テーブル内に空白行がないことを確認してください。空白行があると空のシートが生成される可能性があります。
- シートの命名規則を確認し、重複または無効なワークシート名を避けてください。Kutoolsは、名前の衝突が発生した場合に自動的に調整します。
- テーブルが非常に大きい場合、大量のワークシートが生成される可能性があるため、進行する前にこれを考慮してください。

利点: コードを書く必要なしで簡単に使用可能;バッチ処理や頻繁なタスクに適しています。
欠点: Kutoolsアドインをインストールする必要があります。
適している人: すべてのレベルのExcelユーザー、特に反復的なデータ分割を扱うユーザー。

Kutools for Excel - 必要なツールを300以上搭載し、Excelの機能を大幅に強化します。永久に無料で利用できるAI機能もお楽しみください!今すぐ入手


デモ:Kutools for ExcelのSplit Dataユーティリティを使用して各行ごとに新しいシートを作成する

 
Kutools for Excel: あなたの指先に 300 以上の便利なツールが集結!永久無料のAI機能をお楽しみください!今すぐダウンロード!

最高のオフィス生産性ツール

🤖 Kutools AI Aide:データ分析を革新:インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析してグラフを生成  |  Kutools Functions を呼び出す
人気機能重複の検索・ハイライト・マーキング   |  空白行を削除   |  データを失わず列やセルを統合   |   丸める ...
スーパーLOOKUP複数条件VLOOKUP   複数値VLOOKUP  |  複数シートの検索  |  ファジーマッチ ....
高度なドロップダウンリストすばやくドロップダウンリストを作成   |  依存型ドロップダウンリスト   |  複数選択ドロップダウンリスト ....
列の管理:特定数の列を追加  | 列を移動  | 非表示列の表示状態を切り替え |  範囲と列の比較 ...
注目機能グリッドフォーカス   |  デザインビュー  |  強化された数式バー   ワークブック&ワークシートの管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リスト送信で電子メールを送信   |  スーパーフィルター   |   特殊フィルタ(太字/斜体/取り消し線でフィルタ...)
トップ15ツールセット12 種類のテキストツールテキストの追加特定の文字を削除など)  |  50 種以上のグラフ タイプガントチャートなど)  |  40を超える実用的な 数式誕生日に基づいて年齢を計算する、など)  |  19種の 挿入ツールQRコードの挿入パスから画像の挿入など)  |  12種類の 変換ツール単語に変換する通貨変換など)  |  7つの 結合&分割ツール高度な行のマージセルの分割など)  |  ...さらに多数
お好きな言語でKutoolsを使用できます ― 英語、スペイン語、ドイツ語、フランス語、中国語など40以上に対応!

Kutools for ExcelでExcelスキルを強化し、かつてない効率を体験しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と時間短縮を実現します。最も必要な機能を今すぐ取得...


Office TabはOfficeにタブ表示を追加し、作業効率を大幅に向上させます

  • Word、Excel、PowerPointでタブ編集とタブ閲覧を有効にします
  • 同じウィンドウ内の新しいタブで複数のドキュメントを開いたり作成したりできます。新しいウィンドウを開く必要はありません。
  • 生産性が50%向上し、1日に何百回ものマウスクリックも削減できます!