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

Excelで大きな表を複数の小さな表に分割するにはどうすればよいですか?

Author: Xiaoyang Last Modified: 2025-05-23

多数の列や数百、数千の行を持つ大きなExcel表がある場合、それをより管理しやすい小さな表に分割したいと思うかもしれません。例えば、特定の列の値に基づいてデータを分離したり、固定行数ごとに分割したりすることが考えられます。このチュートリアルでは、このタスクを効率的に実行するためのステップバイステップの方法を提供します。

メインテーブル   列の値に基づいて複数のテーブルに分割 行数に基づいて複数のテーブルに分割
A screenshot of a large table in Excel before splitting Arrow A screenshot of an Excel table split by column values A screenshot of an Excel table split by row count

VBAコードを使用して列の値に基づいて大きな表を複数のテーブルに分割

VBAコードを使用して特定の行数に基づいて大きな表を複数のテーブルに分割

Kutools for Excelを使用して列の値または行数に基づいて大きな表を複数のテーブルに分割


VBAコードを使用して列の値に基づいて大きな表を複数のテーブルに分割

特定の列の値に基づいてこの大きな表を複数のテーブルに分割するには、次のVBAコードが役立ちます。以下の手順を行ってください:

1. 「ALT」+「F11」キーを押して、「Microsoft Visual Basic for Applications」ウィンドウを開きます。

2. 「挿入」>「モジュール」をクリックし、次のコードを「モジュール」ウィンドウに貼り付けます。

VBAコード: キーカラムで大きな表を複数のテーブルに分割:

Sub Splitdatabycol()
'by 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
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
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").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」キーを押してこのコードを実行すると、プロンプトボックスが表示されますので、データからヘッダー行を選択してください(スクリーンショット参照):

A screenshot showing how to select the header row for splitting tables

4. 次に「OK」をクリックすると、別のダイアログボックスが表示されますので、表を分割する基準となる列データを選択してください(スクリーンショット参照):

A screenshot showing how to select the column for splitting tables by values

5. 「OK」をクリックすると、大きな表は列の値に基づいて複数のワークシートに分割され、新しいワークシートはマスターシートの後に配置されます。また、新しいワークシートは列の値で名前が付けられます(スクリーンショット参照):

A screenshot showing multiple worksheets created after splitting by column values


VBAコードを使用して特定の行数に基づいて大きな表を複数のテーブルに分割

行数に基づいて表を複数のテーブルに分割する必要がある場合、次のVBAコードが役立ちます。

1. 「ALT」+「F11」キーを押して、「Microsoft Visual Basic for Applications」ウィンドウを開きます。

2. 「挿入」>「モジュール」をクリックし、次のコードを「モジュール」ウィンドウに貼り付けます。

VBAコード: 行数で大きな表を複数のテーブルに分割:

Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub
SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

3. 次に、「F5」キーを押すと、ポップアップしたダイアログボックスでヘッダー行を選択します(スクリーンショット参照):

A screenshot showing how to select the header row for splitting by row count

4. 次に「OK」をクリックし、2番目のプロンプトボックスで分割したいデータ範囲を選択します(スクリーンショット参照):

A screenshot showing how to select the data range for splitting by rows

5. さらに「OK」ボタンをクリックすると、3番目のプロンプトボックスで分割する行数を入力します(スクリーンショット参照):

A screenshot showing how to enter the number of rows for splitting in Excel

6. 次に「OK」ボタンをクリックすると、マスター表は行数に基づいて複数のワークシートに分割されます(下のスクリーンショット参照):

A screenshot of multiple worksheets created after splitting by row count


Kutools for Excelを使用して列の値または行数に基づいて大きな表を複数のテーブルに分割

上記のコードは多くのユーザーにとって難しい場合があります。そこで、ここでは「Kutools for Excel」の驚異的な機能である「データの分割」を紹介します。このツールを使用すると、キーカラムまたは行数に基づいて大きな表を迅速かつ簡単に複数のテーブルに分割できます。

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

1. 分割したいデータ範囲を選択し、「Kutools Plus」>「データの分割」をクリックします(スクリーンショット参照):

2. 「複数のワークシートにデータを分割」ダイアログボックスで、必要な設定を行います:

(1.) 必要に応じて「分割の基準」セクションから「特定の列」または「固定行」を選択します;

(2.) 「ルール」ドロップダウンリストから新しいワークシート名を指定し、必要に応じてシート名に「接頭辞」または「接尾辞」を追加することもできます。

A screenshot showing settings for splitting data using Kutools

3. 次に「OK」ボタンをクリックすると、大きな表は新しいワークブック内の複数の小さな表に分割されます(スクリーンショット参照):

列の値に基づいて複数のテーブルに分割 行数に基づいて複数のテーブルに分割
A screenshot of an Excel table split into worksheets by column values using Kutools A screenshot of an Excel table split into worksheets by row count using Kutools

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


関連記事:

  • Excelでワークブックを個別のExcelファイルに分割
  • 各ワークシートを個別のExcelファイルとして保存することで、大きなワークブックを個別のExcelファイルに分割する必要があるかもしれません。例えば、ワークブックを複数の個別のExcelファイルに分割し、それぞれのファイルを異なる人に渡して処理させることができます。これにより、特定の人々に特定のデータを処理させることができ、データの安全性を保つことができます。この記事では、各ワークシートに基づいて大きなワークブックを個別のExcelファイルに分割する方法を紹介します。
  • Excelでフルネームを名前と姓に分割
  • 最初のスクリーンショットのように、単一列にフルネームが並んでいる名簿があり、それを名前列、ミドルネーム列、姓列に分割する必要があるとします(次のスクリーンショット参照)。この問題を解決するためのいくつかの巧妙な方法をご紹介します。
  • Excelで長い列を複数の列に分割
  • Excelで長い列データがある場合、それを見るのは面倒です。しかし、そのような長いリストを複数の列に分割できれば、見やすくなります。
  • Excelで単語や数字を別々のセルに分割
  • ワークシートに数字や単語のリストがあり、その内容を以下のようなスクリーンショットのように文字ごとに異なるセルに分割する必要がある場合、Excelでどのように対処すればよいでしょうか?
  • Excelで長いリストを等しいグループに分割
  • 次のスクリーンショットのように、長いリストのデータを複数の等しいグループに分割する必要がある場合、Excelでこれを迅速かつ簡単に処理するにはどうすればよいでしょうか?

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

🤖 Kutools AI アシスタント: データ分析を革命化する: インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析しグラフを生成  |  拡張機能を呼び出す
人気の機能: 重複を見つけてハイライトまたはマーキング   |  空白行を削除   |  データを失わずに列またはセルを統合   |   丸める ...
スーパーLOOKUP: 複数条件のVLookup    複数値のVLookup  |   複数シートの検索   |   ファジーマッチ ....
高度なドロップダウンリスト: ドロップダウンリストを迅速に作成   |  依存ドロップダウンリスト   |  マルチセレクトドロップダウンリスト ....
列管理: 特定の数の列を追加  |  列を移動  |  非表示列の可視ステータスを切り替え  |  範囲と列を比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   強化された数式バー    ワークブック & ワークシート管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リストで電子メールを送信   |  スーパーフィルター   |   特殊フィルタ (太字/斜体/取り消し線をフィルタリング...) ...
トップ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%向上させ、毎日数百回のマウスクリックを減らします!