さくっとエクセレートさくっとエクセレート
PR

エクセルで複数ファイルを1つにまとめる方法|ブック結合・マージの決定版

Thumbnail for エクセルで複数ファイルを1つにまとめる方法|ブック結合・マージの決定版
  • 「複数のブック(ファイル)のデータを1か所に集約してリスト化したい。
  • 「たくさんあるファイルの台帳を作成して、管理しやすくしたい。

このような課題は、Excel(エクセル)の機能を使えば自動化できます。本記事では、複数のブック・シートのデータを縦につなぐ 「追加(縦結合)の方法 を解説します。

用語の定義:マージ(横結合)は別記事

Excelでは「結合」や「統合」という言葉が広く使われますが、
本記事で扱うのは データを縦に積み重ねる「追加」 の操作です。
横結合については、コチラの「マージ(横結合)解説記事」で取り扱っています。

結合の種類別称・関連用語意味扱う記事
縦結合ユニオン・追加同じ列構成のデータを縦に積み重ねる月別売上ファイルを1枚にまとめる→ 本記事で解説
横結合マージ・リレーションシップ・VLOOKUP・紐づけ異なる表を共通キーで横に紐付ける顧客マスタと注文履歴をIDで結合→ 別記事へ
縦結合と横結合
吉峰
吉峰

複数ブックを「1ブックかつ複数シート」にするだけなら、手作業によるシートの移動が手っ取り早いです。

Excelのバージョン

本記事は、Excel 2024(ローカルまたは共有フォルダーでの運用) を前提に作成しています。
環境によっては、UIなどの細かな点が異なる場合があります。

※ 本記事の見出しでは「エクセル」本文では「Excel」と表記を統一しています。

結論|複数ブックを1枚のシートに結合する5つの選択肢

「1つのブックにまとめる」だけでなく、最終的に「1枚のシートに結合する」ための用途別オススメは以下の通りです。

  • 一時作業・ファイル数が数個程度手動(コピペ)
  • 一時作業・ファイル数が10個程度VSTACK関数
  • 定期更新あり・ファイル数が多いPower Query (★オススメ)
  • 書式(色や罫線)もコピーしたいVBA

比較表|Excelで複数ファイルを1シートにまとめる手法

自分に最適な方法を以下の表から確認してください。

手法
(対応Ver)
難易度
✅メリット ❌デメリット向いているケース
1. 手動
(すべて)
★☆☆
✅誰でもすぐできる。書式も残る。
❌数が多いとミスが起きやすく、時間がかかる。
・一時的な作業
・少数ブック(5ブック程度が目安)
・形式がバラバラなデータの統合
2. VSTACK関数
(365 / 2024以降)
★★☆
✅シート数が多い場合でも、比較的手軽に対応できる。
❌ブックの増減に弱い。旧版Excelで使えない。
・一時作業かつ中程度のブック数
・1ブック内の複数シート集約
3. Power Query
(2016以降)
★★☆
フォルダーに放り込むだけで自動更新。
❌最初の設定に少し慣れが必要。
・定期的な更新作業
・大量ブックの統合・フォルダ管理
標準的なビジネス環境
4. VBA
(すべて)
★★★
✅複雑な条件分岐や書式・色のコピーが可能。
コードが書けないと修正不能。
・特殊な処理制御が必要
・既存マクロとの連携
・PQが使えない特殊環境

傾向として、上の手法ほど手軽で柔軟性があり、下の手法ほど自動化・効率化の度合いが強くなります。

吉峰
吉峰
1ブック内の複数シートを1シートにまとめるときは、VSTACK関数 + 3D参照が便利です。

手法1. 手動|少数のコピペならこれが最速

ファイル数が2〜3個で、今後二度とやらない作業であれば、「開いて、コピーして、貼る」が結局一番早い方法です。

【手順】

  1. コピー元のブックを開き、対象範囲を選択して Ctrl + C でコピーする。
  2. 集約先のシートの末尾(データのすぐ下)を選択して Ctrl + V で貼り付ける。
吉峰
吉峰

ファイル数が多いと貼り付け位置を間違えたり、データを上書きしたりするリスクがあるため、目視確認が必須です。

手法2. VSTACK関数|一時的なファイルマージに最適

Microsoft 365やExcel 2024以降で使える VSTACK関数 は、複数の範囲を縦に繋げる関数です。数式1つで結果が返ってくるため、一時的な作業では一括で統合でき、非常に役立ちます。

 

手順:「串刺し参照」で複数シートを1枚に

すでに1つのブック内にすべてのデータシートが集約されている場合、または集約してから作業したい場合は、VSTACK関数内で3D参照(串刺し参照) を使うのが有効です。

事前準備:シートを1つのブックにまとめる方法

3D参照を使うために、バラバラのブックにあるシートを1つに集めるには、以下の操作を行います。

  • 方法1. ドラッグ&ドロップ(最速)
    コピー元とコピー先、両方のExcelウィンドウを並べ、シートタブを別ブックへドラッグします。 Ctrlキーを押しながら ドラッグするとコピーになります。 Shiftキーを押しながら タブを選択すれば、複数シートの一括操作も可能です。
  • 方法2. 右クリックから移動・コピー
    まとめたいブックをすべて開き、シートタブを右クリックして「移動またはコピー」を選択します。移動先ブックを指定し、「コピーを作成する」にチェックを入れます。この操作を各ブックで繰り返してください。

3D参照:複数シートを1枚に「串刺し」結合

同一ブック内の「1月」から「12月」までのシートを1つにまとめたい場合、シート名を範囲指定する 3D参照(串刺し参照) が使えます。

例: =VSTACK('1月:12月'!A2:C100)

この数式1つを入力するだけで、指定したシート間に挟まれたすべてのシートのデータを縦一列に積み上げることができます。

吉峰
吉峰

繰り返し行う作業で自動化 したい場合は、Power Query がオススメです。

手法3. Power Query|フォルダーごと一括統合する(推奨)

「ファイル数が多い」「定期的に更新する」「閉じたブックをまとめたい」という、すべての条件に対応できるのが Power Query(パワークエリ) です。

 

前提条件:同形式ブックをフォルダーにまとめる

結合するブックには、以下の2つの前提条件があります。

  • 条件1 :結合するブックは、 「シート名」や「セル配置」がすべて共通 していること
  • 条件2 :結合するすべてのブックは、 1つのフォルダーにまとめて格納 しておくこと
吉峰
吉峰

「シート名」や「セル配置」が異なる場合でも、共通する「テーブル名」「見出し名」を持つテーブルであれば、問題なく結合できます

フォルダー・ファイル構成の例

ここでは、複数のブック( ソースブック1.xlsx ~ 3.xlsx内のシート( Sheet1をすべて結合し、得られたテーブルをブック( マスタ.xlsxに出力する例を示します。結合するシート( Sheet1内のセル配置(データ形式)はすべて同じとします。

- マスタ.xlsx
- ソース
      - ソースブック1.xlsx (Sheet1を持つ)
      - ソースブック2.xlsx (Sheet1を持つ)
      - ソースブック3.xlsx (Sheet1を持つ)
結合前後のイメージ
 

手順:複数ブックを1つのテーブルにまとめる

複数のブック内のデータを1つに結合する手順は以下の通りです。

  1. 取り込み: フォルダーごと複数のブックを取り込む
  2. 結合の設定: 結合するブック内のデータを選択する
  3. データの整形: 不要なデータ(行 / 列)の削除やデータ型の変換などを行う
  4. 読み込み: 結合後のテーブルを配置する
STEP1

取り込み

マスタ.xlsxから、複数のブック( ソースブック1.xlsx ~ 3.xlsxをフォルダー( ソースごと読み込みます。

  1. データ タブの データの取得 > ファイルから > フォルダーから を選択する。
  2. 複数のブックを格納したフォルダー( ソースを選択する。
取り込み
STEP2

結合の設定

結合するブック内のデータを選択し、Power Queryエディターを起動します。

  1. ダイアログで 結合 > データの結合と変換 を選択する。(次の「データの整形」が不要なら、 結合 > 結合および読み込み先... も可)
  2. 全ブック共通のシート( Sheet1を選択し、 エラーのあるファイルをスキップする にチェックを入れ、 OK を選択する。
吉峰
吉峰

全ブック共通のテーブルがある場合は、シートではなくテーブルを選択します。

結合の設定
STEP3

データの整形

Power Queryエディターを使うと、不要なデータ(行 / 列)の削除やデータ型の変換などが可能です。ここでは、 変化量 列が空( nullの行を削除します。データの整形が不要な場合は次の手順に進んでください。

  1. Power Queryエディター内で、見出し 変化量 のフィルターボタンをクリックする。
  2. null のチェックを外し、 OK をクリックする。
データの整形
STEP4

読み込み

整形済みの結合テーブルをシート上に配置します。

  1. ホーム / ファイル タブ > 閉じて次に読み込む... を選択する。
  2. データのインポート ダイアログで テーブル を選択する。
  3. データを返す先を選択してください。 欄で、テーブルの配置場所を指定し、 OK をクリックする。
読み込み
 

データの更新・ファイル追加の方法

配置したデータを更新するときは、 データ タブの すべて更新 を押します。テーブルを右クリック > 更新 でも更新可能です。

ファイルの追加手順:

  1. 読み込み元として設定したフォルダー内に、新しいExcelファイルを追加する。
  2. 結合先のブックを開き、 すべて更新 を実行する。
  3. これだけで、追加したファイルのデータが自動的に末尾に結合されます。

一度設定してしまえば、ファイルが増えても「コピー&ペースト」の作業は一切不要になります。

吉峰
吉峰

Power Queryは、 「更新」ボタンひとつで最新データを取り込める のが最大の強みです。一度設定すれば、コピペの手間も数式の修正も一切不要になります。

 

応用1:シート名やセル配置が異なる場合の対処法

シート指定の代わりに、 テーブルを指定する方法 もあります。この場合は、「テーブル名」と「見出し名」が共通している必要があります。

結合できるパターン

  • パターン1. 複数ブックで「シート名」と「セル配置」がすべて共通している
  • パターン2. 複数ブックで「テーブル名」と「見出し名」がすべて共通している
    • → 下記の手順

【大まかな手順】

  1. 各ブックで読み込みたい範囲を「テーブル(Ctrl+T)に変換し、テーブル名を統一する
  2. 上記手順を行い、「Step2.結合の設定」のiiで「テーブル」を選択する
 

応用2:ファイル名などの付随情報を取得する

ファイルパスや更新日などのブック(ファイル)情報を取得したい場合は、Power Queryのクエリ内容を変更する必要があります。

対応方法は主に2つです。

▼ 方法1, 方法2の結果

方法1, 方法2の結果
  • 方法1. 「読み込み」クエリのみを使用する
    ブックの 中身のデータが不要な場合 は、この方法ですぐに実装できます。
    結合の設定(Step2)のときに、ダイアログで 読み込み先... を選択します。

  • 方法2. 「結合」クエリを修正する
    結合プロセスの途中で削除されてしまう列( Source.Name など)を残すように、クエリ内の処理ステップを修正します。

    結合プロセス中で削除される列の例

    • ファイル名Source.Name
    • パスFolder Path
    • 作成日Date created
    • 修正日Date modified

    「データの整形」の最初に、Power Queryエディター右側「適用したステップ」内の「削除された他の列1」を削除することで、 Source.Name (ファイル名)などの情報を残すことができます。
    方法2の手順

 

トラブルシューティング:よくあるエラーと対処法

エラー・症状原因対処法
列名が一致しない各ブックで列名が異なる各ブックでテーブル化し、列名を統一する
シート名が違う読み込み対象のシート名がバラバラテーブル名で管理し、テーブル名を統一する
~$ファイル名が読み込まれる一時ファイルが混入している対象フォルダー内のすべてのブックを閉じてから更新する

手法4. VBA|特殊な処理が必要な上級者向け

Power Queryで対応できない「書式のコピー」や「複雑な条件分岐」が必要な場合のみ、VBAの使用を検討します。

 

VBAが必要になるケース

  • セルの色や罫線などの「書式」ごとコピーしたい場合
  • 特定の条件に一致するシート名だけをループ処理したい場合
 

実装例:フォルダー内のファイルをループして集約

以下は、特定のフォルダー内のExcelファイルを順に開いてデータを集約するコードの例です。

Sub MergeWorkbooks()
    Dim f As String, p As String, wb As Workbook
    p = ThisWorkbook.Path & "\ソース\" 'フォルダーパスを指定
    f = Dir(p & "*.xlsx")
    
    Do While f <> ""
        Set wb = Workbooks.Open(p & f)
        '2行目以降を、このブックのシート1の末尾へコピペ
        wb.Sheets(1).UsedRange.Offset(1).Copy _
            ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
        wb.Close False
        f = Dir()
    Loop
End Sub
vba
吉峰
吉峰

VBAは強力ですが、メンテナンス性が低下しがちです。値の集計だけであれば、Power Queryを第一選択にしましょう。

まとめ|Power Queryで結合作業は自動化できる

用途別のオススメは以下の通りです。

  • 一時作業・ファイル数が数個程度手動(コピペ)
  • 一時作業・ファイル数が10個程度VSTACK関数
  • 定期更新あり・ファイル数が多いPower Query (★オススメ)
  • 書式(色や罫線)もコピーしたいVBA

上記で説明した通り、 Power Queryの「フォルダーから」 を使った結合で、 複数のブックデータを集約 したテーブルを作成できます。一度設定してしまえば、ファイルが増えても「コピー&ペースト」の作業は一切不要になります。 「更新」操作だけ で常に最新の状態を保つことが可能です。

Power Queryの結合機能は以下にも応用できます。

  • ファイル・書類の台帳作成
  • 1ブック当たりの上限行数(約100万行)を超えたデータの取り扱い
吉峰
吉峰

Power Queryを活用できるとデータの活用・再利用が進み、業務効率化につながりますExcel 2016以降のユーザーなら、身につけて絶対に損のないツールと言えるでしょう。