Power Query でブック内のすべてのワークシートを取り込み、一括で結合する方法

複数シートに分散したデータを集計する際、Power Query でシートごとに読み込む手間を削減し、一括で縦方向に結合すると作業効率が大幅に向上いたします。本記事では、外部ブック内のシートをまとめて取得し、特定のシート(例: Summary)を除外したうえで結合する M コードの例をご紹介いたします。


目次

前提条件

項目内容
対象ブックC:\Data\ReportSheets.xlsx
除外シートSummary
シート構成すべて同一列構造(例: Date, SlipNo, Amount など)
対応 ExcelMicrosoft 365/2019/2016(Power Query 搭載版)

M コード(詳細エディターに貼り付け)

let
    // 対象ブックをバイナリとして読み込み
    BinaryFile  = File.Contents("C:\Data\ReportSheets.xlsx"),

    // ブック内のシート・テーブル一覧を取得
    AllObjects  = Excel.Workbook(BinaryFile, true),

    // Kind 列が "Sheet" かつ Name 列が "Summary" 以外を抽出
    SheetOnly   = Table.SelectRows(
        AllObjects,
        each ([Kind] = "Sheet" and [Name] <> "Summary")
    ),

    // 各シートの Data 列(テーブル本体)だけを取り出し、リスト化
    SheetTables = Table.Column(SheetOnly, "Data"),

    // 最初のシートから列名を取得し、他シートと合わせて結合
    ColHeaders  = Table.ColumnNames(SheetTables{0}),
    CombinedTbl = Table.Combine(SheetTables, ColHeaders)
in
    CombinedTbl

コードのポイント

ステップ説明
File.Contents外部 Excel ブックをバイナリ形式で読み込みます。ネットワークパスも同様に扱えます。
Excel.Workbookブック内のシート・テーブル・名前付き範囲の一覧をテーブル形式で返します。第 2 引数 true は列型を自動推定するオプションです。
シート抽出Table.SelectRows[Kind]="Sheet" を条件にシートのみ取得し、さらに [Name]<>"Summary" で除外シートを設定いたします。
列ヘッダーの統一結合前に Table.ColumnNames で最初のシートの列名を取得し、Table.Combine の第 2 引数に渡すことで列順を強制的にそろえています。

操作手順

  1. Power Query エディターを開く
    • Excel メニュー「データ」タブ →「データの取得」→「ファイル」→「Excel ブック」を選択し、ReportSheets.xlsx を指定いたします。
    • ナビゲーターで任意のシートを一つ選択し、右下の「データの変換」をクリックしてエディターを起動いたします。
  2. 詳細エディターに M コードを貼り付ける
    • エディター上部「ホーム」リボン →「詳細エディター」を開き、既存コードをすべて削除して上記 M コードを貼り付けます。
    • 「完了」を押すと、プレビューに対象シートがすべて縦方向に連結された結果が表示されます。
  3. 読み込み方法を選択する
    • プレビューを確認後、「閉じて読み込む」をクリックし、シートの指定セルまたは接続のみとして保存します。

応用例

要件実装例
複数シートを動的にフィルターText.StartsWith([Name], "2025") で年ごとに絞り込むなど、Text.* 関数を組み合わせます。
数値列を一括で型変換Table.TransformColumnTypes を追加し、{"Amount", type number} のように列と型を指定します。
重複行の削除結合後に Table.Distinct を適用し、一意行のみ残します。

まとめ

  • Excel.WorkbookTable.Combine を組み合わせることで、シートをまたいだデータを簡単に一括集計できます。
  • 除外条件や列型変換を M コードに含めておくと、Power Query の更新ボタンを押すだけで常に最新データへ更新可能です。
  • 年度ごとや部署ごとにシートを分けているブックでも、この方法を用いればレポート作成や分析作業を効率化できます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次