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

複数ファイルを一括統合!エクセルデータを効率よくまとめるブック結合法

Thumbnail for 複数ファイルを一括統合!エクセルデータを効率よくまとめるブック結合法

はじめに

「複数のブック(ファイル)のデータを1か所に集約してリスト化したい。」
「たくさんあるファイルの台帳を作成して、管理しやすくしたい。」

このような課題は、 Excel(エクセル)のPower Query(パワークエリ)を使った「フォルダーから」のデータの読み込みで実現できます。

  • フォルダに入れた 複数のファイル をまとめたリストが作成できる。
  • 複数のブック内のデータ を1つに結合・統合できる。
  • 作成したリスト・テーブルは、「更新」操作1つでデータ更新 可能。フォルダにファイルを追加すればデータが追加される。

実践:複数ブックを1つに結合する手順

Power Queryで、複数のブック内のデータを1つに結合する手順を解説します。 ただし、結合するための条件があります。

 

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

結合するブックの前提条件は、以下の2つです。

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

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

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

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

- マスタ.xlsx

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

Power Queryを使って結合する手順

複数のブック内のデータを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をクリック。
読み込み

データの更新操作

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

メリット:なぜ関数よりPower Queryなのか

Excelには、データを連結する関数も存在しています。 しかし、複数のブックを結合する場合には、Power Queryの使用がオススメです。

理由は2つあります。

  • データの更新が簡単であるため
  • Excel 2016以降で使えるため
 

データの更新が簡単

Power Queryを使うと、データの更新が簡単です。 リアルタイム更新ではありませんが、 「更新」操作のみで、ソースのブックを開かずデータ更新 ができます。 「更新」操作は、「すべて更新」を1クリックするか、 一定の時間間隔での自動更新によって実行できます。

吉峰
吉峰

フォルダの中に新規ブックを追加すると、簡単にデータを追加できます。 もちろん既存のブック内の書き換えも、結合後のデータに反映されます。

一方で、関数(VSTACKHSTACKなど)で実装しようとすると、 結合するブックを追加・削除するときに、毎回数式を書き換える必要が生じます。 数式による外部参照は、不安定である点も致命的です。

 

Excel 2016以降で使える

Power Queryは、少し前のバージョンのExcelでも使用可能です。 Excel 2016から標準搭載された機能で、2010 / 2013でもアドインによって追加できます (ただしアドイン自体の更新は終了)。

一方で、関数(VSTACKHSTACKなど)は新しいExcelから追加された関数で、 Excel 2024 / Microsoft 365以降でないと使用できません。

【逆引き】状況別の解決策

状況によっては、それぞれ違ったアプローチの方が効果的な場合があります。 以下の状況について、それぞれ説明します。

  • 複数のブックで「シート名」「セル配置」が異なる → テーブルを使用
  • ファイル情報を取得したい → クエリを修正
 

「シート名」「セル配置」が異なるならテーブルを使用

結合したい複数のブックの「シート名」または「セル配置」がそれぞれ異なる場合は、 シート を指定するのではなく、 テーブル を指定する方法も あります。 テーブル指定の場合の条件は、「テーブル名」と「見出し名」が共通であることです。

結合できるパターン

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

ファイル情報を取得するならクエリを修正

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

簡単な方法は主に2つです。

  • 方法1. 「読み込み」クエリのみを使用する

    ブックの中身のデータが不要な場合は、こちらですぐに実装可能です。
    「結合の設定」のときに、ダイアログで読み込み先...を選択します。

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

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

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

    「データの整形」の最初に、Power Queryエディター右側「適用したステップ」中の「削除された他の列1」の処理を削除することで実装できます。

Power Queryで結合は自動化できる

上記で説明した通り、 Power Queryの「フォルダーから」 を使った結合で、 複数のブックデータを集約 したテーブルが作成できます。

この機能は以下にも応用可能です。

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

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