Youtube始めました💻30代からのパソコンスキルUP講座

PowerQuery: 複数のワークシートからデータを一括取り込み・結合する方法

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

橋本 由夏
Excel作家、ExcelのYouTuber、Excel・Wordの講演
出身地:熊本県
職 業:Excel作家、ExcelのYouTuber、Excel・Wordの講演
著 書:Excel厳選テクニック本を出版 コチラから本が見れます
経 歴:民間、パソコンインストラクター、公的機関で勤務経験あり

目次

パワークエリ|複数のワークシートからデータを一括取り込み・結合する方法

今回の目的と元データ

目的

複数の支店の売上データ(別々のワークシートに格納)をPowerQueryで取り込み、一つのテーブルに結合します。将来的にワークシートが追加された場合も、自動で反映されるようにします。

元データ

「売上報告書」というExcelブック内の「神奈川支店データ」「三重支店データ」などのワークシート。これらはExcelの「テーブル」機能で書式設定されていない、データ範囲です。

データの取り込み(正しい方法)

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

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

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

POINT

ナビゲーターで「複数のアイテムを選択」にチェックを入れ、各シートを手動で選択すると、シートごとに個別のクエリが作成されてしまい、一つのテーブルに結合されません。

ナビゲーターウィンドウが開いたら、個別のシート(例: “三重支店”)を選ぶのではなく、ファイル全体(フォルダのアイコン)を選択します。[データの変換] をクリックして、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キーのショートカット集
✅現金出納帳フォーマット
✅家計簿フォーマット
✅備品管理表フォーマット
✅提出物が揃ったら自動で完成(提出物確認)
✅備品注文書(チェックボックスで管理)
✅ガントチャートフォーマット
✅目次自動作成ツール

\ 無料メルマガに登録してプレゼントの受け取りはここから/

本の紹介

✅基礎ってなにを学ぶんだろう?
✅毎回ネットで検索するので時間がかかる
✅Excelで業務スキルをアップしたい
✅短時間で実務に役立つポイントを知りたい

この一冊で、Excelの問題解決!
日々の業務においてExcelで効率化したい方にとって、この一冊は、必勝のガイドブックとなります。

★1秒でも早く帰りたい方へ★

改善Excel パフォーマンスを底上げする仕事改善・効率化テクニック
※書籍のダウンロードサイトで解りやすい資料作りが出来る!

Amazon:https://amzn.to/3TxOAmC
楽天:https://books.rakuten.co.jp/rb/17199338/
SBクリエイティブサイト:https://www.sbcr.jp/product/4815613532/

✼••┈┈••✼••┈┈••✼••┈┈••✼••✼••┈┈••✼••┈┈••✼••┈┈••✼✼••┈┈••✼••┈┈••
無料メルマガ(日々の業務を効率化♪1秒でも早く帰りたい人向けに発信してます。)

登録フォームで必要事項を入力の上「確定」ボタンをクリックしていただければ
メルマガ登録完了です。
※なお、登録後の購読解除は、各回のメルマガの末尾に一発解除リンクを設定しており、
そちらから随時できますのでご安心ください。

✼••┈┈••✼••┈┈••✼••┈┈••✼••✼••┈┈••✼••┈┈••✼••┈┈••✼✼••┈┈••✼••┈┈••

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次