Excel で各行ごとに新しいシートを作成するには?
データ管理やレポート作成のタスクでは、テーブル内の各レコードを個別のワークシートに分離したい場面がよくあります。たとえば、Excel で学生の詳細情報を管理していて、各行が異なる学生の情報を表している場合、それぞれの学生専用のワークシートを作成したいと思うかもしれません。あるいは、内容にかかわらず、単純に行ごとに新しいワークシートに分割し、各行を個別に配置したいケースもあるでしょう。こうした作業を手動で行うと、特に大規模なデータセットでは多大な時間と労力がかかり、ミスも発生しやすくなります。このプロセスを自動化すれば、大幅な時間節約とミスのリスク軽減が実現可能です。本ガイドでは、Excel で各行ごとに新しいワークシートを作成するための2 つの実用的なソリューションを紹介し、それぞれの長所と短所を解説することで、あなたのシナリオに最適な方法を選びやすくサポートします。
VBA コードで各行ごとに新しいシートを作成
Kutools for Excel のデータの分割ユーティリティで各行ごとに新しいシートを作成
VBA コードで各行ごとに新しいシートを作成
VBA(Visual Basic for Applications)を使えば、面倒で繰り返しの多いExcel 作業を効率よく自動化できます。たとえば、データの各行に基づいて新しいワークシートを素早く作成することが可能です。これは、特定の列(例:学生名など)で行をグループ化する場合でも、すべての行に対して内容にかかわらず個別のシートを作成する場合でも対応できます。この方法は、VBA エディターに慣れ親しんでおり、高度にカスタマイズ可能なソリューションを求めるユーザーに最適です。ただし、コードの編集と実行が必要なため、VBA の経験がない方や、マクロの実行が制限されている環境ではご利用いただけない場合があります。
1。「Alt キー + F11 キー」を押して、Excel 操作を自動化するための VBA コードにアクセスできるMicrosoft Visual Basic for Applicationsウィンドウを開きます。
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」キーを押すか、「実行」をクリックしてコードを実行すると、現在のブック内の既存のシートの後に新しいワークシートが作成され、選択した列の一意の値に従ってそれぞれ名前が付けられます。サンプル結果については、以下のスクリーンショットをご覧ください:

列の内容にかかわらず、各行を単純に個別のワークシートに分割したい場合は、以下の代替 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 のデータの分割ユーティリティで各行ごとに新しいシートを作成
コードを記述せずにシンプルでユーザーフレンドリーな方法を好むなら、データの分割にはKutools for Excelのユーティリティが強くおすすめです。この機能を使えば、わずか数回のクリックでデータを新しいワークシートに素早く分割でき、ワークシート管理の手間を大幅に軽減します。Kutools は、大規模で複雑なテーブルを頻繁に扱う方や、手動でのコーディングよりもグラフィカルなインターフェースを好む方に特に役立ちます。なお、Kutools はExcel アドインのため、事前にインストールが必要です。
1。個別のワークシートに分割したいデータを含むテーブルを選択します。次に、KUTOOLS PLUSタブをクリックし、データの分割を選択してください。下のスクリーンショットをご参照ください:

2。複数のワークシートにデータを分割するダイアログボックスで、あなたの分割ニーズにぴったり合う設定を選びましょう。
A. 列の値に基づいて新しいシートを作成する場合:

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

実行後、選択した設定に基づき、すべての新しいワークシートを含んだ新しいワークブックが生成されます。
列の値に基づいて各行ごとに新しいシートを作成する場合:

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

注意点と実用的なヒント:
・データ分割ユーティリティを使う前に、テーブル内に空白行がないか必ず確認してください。空白行があると、空のシートが作成されてしまう可能性があります。
・重複や無効なワークシート名を避けるため、シートの命名規則を事前に確認しておきましょう。Kutools は名前が重複した場合、自動的に調整します。
・テーブルが非常に大きい場合は、多数のワークシートが生成される可能性があるので、実行前にその影響をしっかり考慮してください。
メリット:コーディング不要で誰でも簡単に使え、バッチ処理や頻繁に行うタスクに最適です。
デメリット:Kutools アドインのインストールが必要です。
向いているユーザー:あらゆるスキルレベルのExcel ユーザー、特に繰り返しのデータ分割作業を効率化したい方。
Kutools for Excel— 300 以上の必須ツールでExcel を強化し、作業をより迅速・簡単に。AI 機能を活用して、スマートなデータ処理と生産性の飛躍的な向上を実現します。今すぐ入手
Kutools for Excel のデータの分割ユーティリティで各行ごとに新しいシートを作成するデモ
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得