Excel で大きなテーブルを複数の小さなテーブルに分割するには?
複数の列と数百行~数千行を含む大きなExcel テーブルを、より管理しやすい小さなテーブルに分割したい場合があります。たとえば、特定の列の値に基づいてデータを分離したり、一定の行数ごとに分割したりする必要があるかもしれません。このチュートリアルでは、こうした作業を効率的にこなすためのステップ・バイ・ステップの方法をご紹介します。
| メインテーブル | 列の値に基づいてテーブルを複数のテーブルに分割 | 行数に基づいてテーブルを複数のテーブルに分割 | |
![]() | ![]() | ![]() | ![]() |
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」キーを押して実行してください。プロンプトボックスが表示されるので、データのヘッダー行を選択してください(下図参照)。

4。次に「OK」をクリックすると、別のダイアログボックスが表示されます。ここで、テーブルを分割する基準となる列データを選択してください(下図参照)。

5。「OK」をクリックすると、大きなテーブルが列の値に基づいて複数のワークシートに分割され、マスターシートの直後に新しいワークシートが挿入されます。これらのワークシートは、対応する列の値を使って自動的に名前付けされます(下図参照)。

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」キーを押して表示されるダイアログボックスで、ヘッダー行を選択してください(下図参照)。

4。次に「OK」をクリックし、2 番目のプロンプトボックスで、行数に基づいて分割したいデータ範囲を選択してください(下図参照)。

5。さらに「OK」ボタンをクリックし、3 番目のプロンプトボックスに分割する行数を入力してください(下図参照)。

6。その後、「OK」ボタンをクリックすると、マスターテーブルが下図のように指定された行数に基づいて複数のワークシートに分割されます。

Kutools for Excel を使用して列の値または行数に基づいて大きなテーブルを複数のテーブルに分割する
上記のコードは多くのユーザーにとって難しく感じられるかもしれません。そこで、ここでは「Kutools for Excel」の優れた機能である「データの分割」をご紹介します。このユーティリティを使えば、キーカラムや指定した行数に基づいて、大きなテーブルを素早く簡単に複数のテーブルに分割できます。
1。分割したいデータ範囲を選択し、「KUTOOLS PLUS」>「データの分割」をクリックしてください(下図参照)。

2。「複数のワークシートにデータを分割する」ダイアログボックスで、必要に応じて設定を行ってください。
(1。)「分割の基準」セクションで、必要に応じて「列を指定」または「固定値」をお選びください。
(2。)「ルール」ドロップダウンリストから作成されるワークシートの名前を指定でき、さらにシート名に「プレフィックス」または「サフィックス」を追加することも可能です。

3。「OK」ボタンをクリックすると、大きなテーブルが新しいワークブック内で複数の小さなテーブルに分割されます(下図参照)。
| 列の値に基づいてテーブルを複数のテーブルに分割 | 行数に基づいてテーブルを複数のテーブルに分割 |
![]() | ![]() |
Kutools for Excel— 300 以上の必須ツールでExcel を強化し、作業をより迅速・簡単に。AI 機能を活用して、スマートなデータ処理と生産性の飛躍的な向上を実現します。今すぐ入手
関連記事:
- Excel でワークブックを個別のExcel ファイルに分割する
- 大きなワークブックを個別のExcel ファイルに分割し、各ワークシートをそれぞれ別々のExcel ファイルとして保存したい場合があります。たとえば、ワークブックを複数のExcelファイルに分けて、それぞれを異なる担当者に渡すことで、特定の人に特定のデータのみを処理させることができます。これにより、データを安全に管理することが可能です。本記事では、各ワークシートに基づいて大きなワークブックを個別のExcel ファイルに分割する方法をご紹介します。
- Excel でフルネームを最初の列と姓に分割する
- 下図のスクリーンショットのように、名簿が1 つの列に記載されており、それを下図のように「名」列、「ミドルネーム」列、および「姓」列に分割する必要があるとしましょう。この課題を解決するための便利な方法をいくつかご紹介します。
- Excel で長い列を複数の列に分割する
- Excel で非常に長い列のデータがあると、閲覧が困難になることがあります。しかし、こうした長いリストをExcel で複数の列に分割できれば、ぐっと見やすくなり、非常に便利です。
- Excel で単語または数値を個別のセルに分割する
- ワークシートに数字や単語のリストがあり、下図のようにセルの内容を各セルごとに1 文字ずつ分割する必要がある場合、Excel ではどのように操作すればよいでしょうか?
- Excel で長いリストを均等なグループに分割する
- 下図のように長いデータリストを複数の均等なグループに分割する必要がある場合、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 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得





