KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Excel のヒント:複数のワークシートにデータを分割する/列の値に基づくワークブックの分割

著者Xiaoyang変更日

Excel で大規模なデータセットを管理する際、列の特定の値に基づいてデータを複数のワークシートに分割すると、非常に効果的です。この方法により、データの整理が向上するだけでなく、可読性が高まり、分析もより容易になります。

たとえば、商品名や第1 四半期の販売数量など、複数のエントリを含む大規模な販売記録があるとします。このデータを商品名ごとに個別のワークシートに分割することで、各商品の販売実績を個別に分析できるようになります。

列の値に基づいて複数のワークシートにデータを分割する

VBA コードを使用してデータの分割を列の値に基づいて複数のワークブックに分割する

列の値に基づいてデータを複数のワークシートに分割


列の値に基づいて複数のワークシートにデータを分割する

通常、データリストをまず並べ替えてから、1 つずつ新しいワークシートにコピー&ペーストする方法があります。しかし、このやり方では繰り返しの作業に忍耐が求められます。本セクションでは、Excel でこのタスクをより効率的にこなし、時間を節約しながらミスのリスクも軽減できる2 つの簡単な方法をご紹介します。

VBA コードを使用して複数のワークシートにデータを分割するを列の値に基づいて分割する

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

2。挿入 > モジュールをクリックし、モジュールウィンドウに次のコードを貼り付けてください。

Sub Splitdatabycol()
'updateby 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
Dim xWS 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
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.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キーを押してコードを実行すると、ヘッダー行を選択するよう促すダイアログボックスが表示されます。OKをクリックしてください。スクリーンショットを参照してください:
VBAコードでヘッダー行を選択してデータをワークシートに分割

4。2 つ目のダイアログボックスで、分割の基準となる列データを選択し、OKをクリックしてください。スクリーンショットを参照してください:
VBAコードでデータ範囲を選択してデータをワークシートに分割

5。アクティブなワークシート内のすべてのデータが、列の値に基づいて複数のワークシートに分割されます。生成されたワークシートは、セルの分割値に従って名前付けされ、ワークブックの末尾に配置されます。スクリーンショットをご参照ください。
VBAコードで結果を取得してデータをワークシートに分割

 

Kutools for Excel を使用して列の値に基づいて複数のワークシートにデータを分割する

Kutools for Excelは、Excel 環境にスマートな機能「データの分割」をもたらします。データを複数のワークシートに分割する作業が、もう難しくありません。当社の直感的なツールを使えば、選択した列の値や行数に基づいてデータセットを自動で分割し、必要な場所に正確に配置できます。スプレッドシートを手作業で整理する面倒な作業とはもうサヨナラ。より迅速に、そしてミスなくデータを管理する新しい方法をぜひご活用ください。

この データの分割機能を使用するには、まずKutools for Excelをダウンロードし、その後すぐに簡単に機能を利用できます。

Kutools for Excel をインストール後、Kutools for Excelをクリックしてデータ範囲を選択し、KUTOOLS PLUS>データの分割をクリックすると、複数のワークシートにデータを分割するダイアログボックスが開きます。

  1. 列を指定」オプションを分割の基準セクションで選択し、ドロップダウンリストからデータを分割する基準となる列を選んでください。
  2. データにヘッダーが含まれており、各新規分割ワークシートにも挿入したい場合は、タイトルを含めるオプションをオンにしてください。(データに応じてタイトルの行数を指定できます。たとえば、データに2 行のヘッダーが含まれている場合は、「2」と入力してください。)
  3. 次に、作成されるワークシートの名前セクションで、「ルール」ドロップダウンリストからワークシート名のルールを指定できます。さらに、シート名にプレフィックスまたはサフィックスを追加することも可能です。
  4. OK」ボタンをクリックしてください。スクリーンショットを参照ください:
    Kutoolsで操作を設定してデータをワークシートに分割

これで、ワークシート内のデータが新しいワークブックに基づいて複数のワークシートに分割されました。
Kutoolsで結果を取得してデータをワークシートに分割


VBA コードを使用してデータの分割を列の値に基づいて複数のワークブックに分割する

場合によっては、データを複数のワークシートに分割するよりも、キーカラムの値に基づいて別々のワークブックに分割した方が効果的です。ここでは、VBA コードを使って、指定した列の値ごとにデータを自動で複数のワークブックに分割する手順をご紹介します。

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

2。挿入 > モジュールをクリックし、モジュールウィンドウに次のコードを貼り付けてください。

Sub SplitDataByColToWorkbooks()
    ' Updateby Extendoffice
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    Dim xTRg As Range
    Dim xVRg As Range
    Dim xWS As Workbook
    Dim savePath As String
    ' Set the directory to save new workbooks
    savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
    Application.DisplayAlerts = False
    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.Address(False, False)
    titlerow = xTRg.Row
    ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
    myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
    ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
    For i = 2 To UBound(myarr)
        Set xWS = Workbooks.Add
        ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
        ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
        xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
        xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"

        xWS.Close SaveChanges:=False
    Next i
    ws.AutoFilterMode = False
    Application.DisplayAlerts = True
    ws.Activate
End Sub
:上記のコードでは、スクリプト内のファイルパスを自身のブックの分割の保存先に変更してください:savePath = 「C:\Users\AddinsVM001\Desktop\multiple files\」

3。次に、F5キーを押してコードを実行すると、ヘッダー行を選択するよう促すダイアログボックスが表示されます。OKをクリックしてください。スクリーンショットを参照してください:
VBAコードでヘッダー行を選択してデータをワークブックに分割

4。2 つ目のダイアログボックスで、分割の基準となる列データを選択し、OKをクリックしてください。スクリーンショットを参照してください:
VBAコードでデータ範囲を選択してデータをワークブックに分割

5。分割後、アクティブなワークシート内のすべてのデータが列の値に基づいて複数のワークブックに分けられ、指定したフォルダーに保存されます。スクリーンショットをご参照ください:
VBAコードで結果を取得してデータをワークブックに分割

関連記事:

  • 複数のワークシートにデータを分割するを行数で
  • 大規模なデータ範囲を特定の行数に基づいて複数のExcel ワークシートに効率的に分割すれば、データ管理がぐっとスムーズになります。たとえば、データセットを5 行ごとに別々のシートに分けるだけで、扱いやすく、整理も簡単になります。このガイドでは、この作業を迅速かつ簡単に実現するための2 つの実用的な方法をご紹介します。
  • キーカラムに基づいて2 つ以上のテーブルを1 つに結合する
  • あるワークブック内に3 つのテーブルがあり、これらを対応するキーカラムに基づいて1 つのテーブルに結合し、以下のようなスクリーンショットの結果を得たいとお考えでしょうか?この作業は多くの人にとって煩雑に感じられるかもしれませんが、ご安心ください。本記事では、この課題をスマートに解決するためのいくつかの方法をご紹介します。
  • 区切り文字でテキスト文字列を複数の行に分割する
  • 通常、「テキストを列に分割」機能を使えば、コンマやピリオド、セミコロン、スラッシュなどの特定の区切り文字に基づいて、セルの内容を複数の列に簡単に分割できます。しかし場合によっては、そうした区切り文字で区切られたセルの内容を複数の「行」に分割し、他の列のデータを以下のスクリーンショットのように繰り返す必要があります。Excel でこのタスクを効率よく処理する方法はあるでしょうか?このチュートリアルでは、Excel でこの作業を確実に完了させるための効果的な手法をいくつかご紹介します。
  • 複数行のセル内容を個別の行/列に分割する
  • Alt + Enter で改行されたセル内の複数行を、個別の行または列に分割したい場合はどうすればよいでしょうか?この記事では、複数行のセル内容を素早く行や列に分ける方法をご紹介します。

最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失うことなく列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 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 でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
  • 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
  • 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!

すべてのKutools アドインが、たった1 つのインストーラーで完結。

Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • 最高のお得感— 個別アドイン購入よりお得