PowerQueryを使用して、一つのExcelブックに含まれる複数のワークシートからデータを抽出し、それらを単一のテーブルに結合する手順を解説します。

橋本 由夏
Excel作家、ExcelのYouTuber、Excel・Wordの講演
出身地:熊本県
職 業:Excel作家、ExcelのYouTuber、Excel・Wordの講演
著 書:Excel厳選テクニック本を出版 コチラから本が見れます
経 歴:民間、パソコンインストラクター、公的機関で勤務経験あり
パワークエリ|複数のワークシートからデータを一括取り込み・結合する方法
今回の目的と元データ
複数の支店の売上データ(別々のワークシートに格納)をPowerQueryで取り込み、一つのテーブルに結合します。将来的にワークシートが追加された場合も、自動で反映されるようにします。
元データ
「売上報告書」というExcelブック内の「神奈川支店データ」「三重支店データ」などのワークシート。これらはExcelの「テーブル」機能で書式設定されていない、データ範囲です。


データの取り込み(正しい方法)
新しいExcelブックを開き、以下の手順でデータを取り込みます。


[データ] タブ > [データの取得] > [ファイルから] > [Excel ブックから] を選択します。


対象の「売上報告書」ファイルを選択し、[インポート] をクリックします。


ナビゲーターで「複数のアイテムを選択」にチェックを入れ、各シートを手動で選択すると、シートごとに個別のクエリが作成されてしまい、一つのテーブルに結合されません。
ナビゲーターウィンドウが開いたら、個別のシート(例: “三重支店”)を選ぶのではなく、ファイル全体(フォルダのアイコン)を選択します。[データの変換] をクリックして、PowerQueryエディターを開きます。
データの整形と変換


すると、この様に全てのシートが取り込まれます。PowerQueryエディターで、取り込んだデータを整形します。


【表示】タブから【プロファイル】にチェックを入れ、神奈川支店の【Table】をクリックすると、下にプレビューが表示されます。【三重支店】【福岡支店】も同様です。
列の選択と展開


必要なのはシート名(支店名)が含まれる Name 列と、実際のデータが含まれる Data 列(テーブルが格納されている列)です。Name 列と Data 列の2つを選択し、右クリック > [他の列の削除] を選択します。


Data 列のヘッダーにある展開ボタン(両矢印のアイコン)をクリックします。


[元の列名をプレフィックスとして使用します] のチェックを外し、[OK] をクリックします。


これにより、すべてのシートのデータが縦に結合されます。
ヘッダーと不要な行の処理
[ホーム] タブ > [行の削除] > [上位の行の削除] を選択し、「2」行(元のファイルのタイトル行など)を削除します。[変換] タブ > [1行目をヘッダーとして使用] をクリックし、項目行をヘッダーに昇格させます。
併せて読むと理解が深まります。


列の整形
一番左の列(元のシート名)の列名を「支店名」に変更します。


「支店名」列を選択し、[変換] タブ > [抽出] > [区切り記号の前のテキスト] を選択します。


区切り記号として「支店」と入力し、[OK] をクリックします。(例: 神奈川支店→ 神奈川)
すると、支店の前が抽出されます。
必要でない行の削除


「日付」列のフィルターを使い、不要な行(支店別売上表、No、null、(ヘッダーの重複))を除外します。([詳細設定] を使うと複数条件を指定できます)


すると、Noの列の不要な行が除外されます。


【売上日】を【日付】に変換します。
[ホーム] タブ > [閉じて読み込む] をクリックし、データをワークシートにテーブルとして出力します。


するとこの様に、Excelシートに読み込まれます。
シート追加の動作確認
元の「売上報告書」ファイルに「栃木支店」シートを追加して保存します。 PowerQueryで作成したテーブル上で [データ] タブ > [すべて更新] をクリックすると、「栃木」のデータが自動的に追加されることが確認できます。
エラーの発生と原因(シートの順序変更)
次に、元の「売上報告書」ファイルで、追加した「福岡支店」シートを一番左側に移動して保存します。
再度PowerQueryで [すべて更新] を行うと、「エラー: テーブルの列 ‘福岡支店’ が見つかりませんでした」といったエラーが発生します。
「1行目をヘッダーとして使用」ステップを実行した際、PowerQueryはその時点で一番左にあったシートの列名(例: “福岡支店”)をヘッダーとして認識しました。
次の「変更された型」ステップでは、その具体的な列名(神奈川支店)を直接参照してデータ型を変更する、というM言語コードが自動生成されます。
シートの順序を変更したことでヘッダー名が「神奈川支店」に変わり、コードが参照していた「栃木支店」という列が見つからなくなったため、エラーとなりました。
エラーの解決策(ヘッダーの手動設定)
この「直接参照」によるエラーを回避するため、以下の手順でクエリを修正します。


PowerQueryエディターを開き、[展開されたデータ] ステップ以降のステップをすべて削除します。
(ヘッダーを昇格させる前に)まず、不要な行(”売上報告書”、”null”、”日付”)をフィルターで除外します。この時点では、列名は “Column1”, “Column2” … となっています。
ヘッダー行もフィルターで消えてしまったため、各列のヘッダーを手動で入力します。(”Column1″ をダブルクリックして「支店名」、「Column2」を「日付」… のように変更)
「支店名」列の抽出(「データ」の前)やデータ型の検出など、残りの整形作業を行います。
[閉じて読み込む] を実行します。
この方法では、ステップの途中で特定のシート名(”関東支店データ”など)を直接参照することがなくなるため、元のファイルでシートの順序を入れ替えてもエラーが発生しなくなります。
- Power Queryで複数のシートをまとめるには?
-
結合したいテーブル(クエリ名)を「追加するテーブル」に設定
「OK」で確定すると、設定した複数シートの表を一つのシートに結合できる。 結合したいシートが増えた場合、簡単であるが「追加するテーブル」に追加の設定が必要となる。
- Power Queryで複数のクエリを結合するにはどうすればいいですか?
-
複数のテーブルを結合したい場合、Power Queryエディターの「ホーム」タブから「新しいソース」を選択し、結合したいテーブルを選択しましょう。 「クエリのマージ」を選択します。 「マージ」ウィンドウで結合したいテーブルを選択し、結合したい列と種類を選択し、「OK」をクリックします。
- Power Queryで複数のクエリを結合するには?
-
Power Queryのクエリ結合には、「クエリのマージ」と「クエリの追加」の2種類があります。「クエリのマージ」は、共通のキー列に基づいて複数のテーブルを横に結合します。一方、「クエリの追加」は、複数のテーブルを縦に結合して1つのテーブルにします。
まとめ
PowerQueryでヘッダーを昇格させると、その内容がステップに「直接参照」として記録され、データの構造(特にシートの順序)が変わった際にエラーの原因となることがあります。
今回は、ヘッダーを昇格させるステップを使わず、代わりに列名を手動で設定することでこの問題を回避しました。より高度な方法として「M言語」を直接編集する方法もあります。
■__________________________________■
メルマガ登録でお渡しする
【10大】
特典をプレゼント中↓↓↓
✅Powerquery教科書(PDF版)
✅MOS教科書(PDF版)
✅Ctrlキーのショートカット集
✅現金出納帳フォーマット
✅家計簿フォーマット
✅備品管理表フォーマット
✅提出物が揃ったら自動で完成(提出物確認)
✅備品注文書(チェックボックスで管理)
✅ガントチャートフォーマット
✅目次自動作成ツール
\ 無料メルマガに登録してプレゼントの受け取りはここから/




コメント