Power Queryで、ブック内にある複数シートの表を一つのシートに結合する方法の備忘録。Power Queryで作成する「クエリ」と「結合したいシート」も同じブック内にしたい場合と、クエリ自体は別ブックでもよい場合で若干手順が異なる。
内容:
アウトプットイメージ
複数のシートに同様のレイアウト(列の並び)でデータあり、一つのシートに結合する。
実施手順
「クエリ」と「結合したいシート」も同じブック内にしたい場合
基本の手順は次のとおり。
結合したいデータ範囲のクエリを作成する。
結合したいデータ範囲を選択後、Excelの「データ」タブの「テーブルまたは範囲から」でクエリを作成する。一つずつ「接続の作成のみ」で結合したいシートのクエリを作成する。
Power Queryエディターで「クエリの追加」をクリック
結合したいテーブル(クエリ名)を「追加するテーブル」に設定
「OK」で確定すると、設定した複数シートの表を一つのシートに結合できる。
この方法では、
- 元の表はテーブル形式となる
- 結合したいシートが増えた場合、簡単であるが「追加するテーブル」に追加の設定が必要となる。
といった特徴がある。
なお、元の表をテーブル形式(もしくは「名前の定義」)とする必要はあるが、
M 言語のセクション - PowerQuery M | Microsoft Learnを使用した方法もある。
詳しくは次のサイトが参考になりました。
なお、クエリ自体は別ブックでもよい場合は、次の方法でシート追加時の都度設定は不要。
クエリ自体は別ブックでもよい場合
「データ」タブから結合したいシートがあるブックを開く
空白のブックなどから、「データ」タブから「Excelブックを開く」を選択する。
ファイル選択の画面が起動するので、結合したいシートがあるブックを選択する
シートではなく、フォルダのアイコンを選択する
ファイル内のシートが表示されるが、フォルダのアイコンを選択し、「データの変換」をクリックする。
もし、ここでシートを選択すると、結合したいシート名の変更や追加時等に都度設定が必要となる。
上記で「データの変換」をクリックすると、次の画面になる。
Name欄とItem欄に「シート名」やDataに「Tabel」のデータがある一覧が表示される。
「Tabel」に各シートのデータが入っている。
「Name」と「Date」の項目以外を削除する
シート名に該当する「Name」と表の中身である「Date」以外を削除する。
なお、シート名に該当するものとして「Name」と「Item」があるが、詳細な違いの情報を確認できなかった。どちらでも良さそうだが「Name」をとりあえず削除している。
一つの表に結合するときにシート名の情報も不要であれば、「Date」以外を削除する。
「Date」を展開する
「Date」列の右側のアイコンをクリックし、「Table」を展開する。
もし、読み込み不要なシートがある場合は、フィルターで削除する。
上記のクリックで、以下の画面となる。「元の列名をプレフィックスとして使用します」のチェックを外している。チェックをつけていると、展開するTableがあった列名(この事例では「Data」)が列名に付記されるが、好みや目的次第。
上記で「OK」をクリックすると、次の画面になる。
以降は、余分なデータの削除や列名等を修正する。
以上、Power Queryで、ブック内にある複数シートの表を一つのシートに結合する方法の備忘録でした。
「複数シートの表を一つのシートに結合」が必要な場面は、元データの取得段階で一つのブックにシート保存作業をしていることも多いと思われます。
元々が別ブックにあるデータの場合は、次の複数のファイルを 1 つに結合する方法が便利です。