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

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

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

Author Xiaoyang Last modified

多数の列や数百、数千の行を持つ大きな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 Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ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%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得