
【M言語は難しくない】今回は、空のクエリにM関数を1つ入力するだけで複数シートを一気に結合できるようにします!今回紹介するM関数を使いこなせば、面倒なシート間のデータのバケツリレーから抜け出すことができます

Power Queryで複数シートを結合する方法として一般的に紹介されている方法では、次の画像の処理「クエリの追加」が必ず入ると思います

今回は、「クエリの追加」は使わず空クエリの数式バーに「=Excel.CurrentWorkbook()」を入力します

1つM関数を入力するだけで、ファイルに含まれるシート内のテーブルが全てエディタ内に反映されます
これで、シート間のバケツリレーの作業からは抜け出すことができます!
但し注意点もありますので、そちらもあわせてM関数/Excel.CurrenWorkBookの使用方法を解説します
目次
今回のポイント
今回はM関数を入力した後に、1点だけ注意点があります
それは、循環問題です
複数シートを1つにまとめた内容/クエリが、M関数に反映されてしまいます
ですので、クエリを更新すると読み込み行数が倍になります
対策として、適用したステップに1つのステップを追加します

今回使用するデータ
今回使用するデータには、シートが3つ含まれています

1シートが1か月分の出荷データになっています
各シートの内容は、事前に「シート名/Data_y年m月」をテーブル名にしてテーブル化してあります

次のファイルが今回、実際に使用するサンプルデータです
準備作業/空のクエリを作成
まずは空のクエリから作成します
「データタブ」➡「データの取得」の順でクリックします
その後、下の画像にて黄色に印をつけた箇所を上から順にクリックします

そして、下の画像にある「空のクエリ」をクリックします

するとエディタが開き、空のクエリが立ち上がります

M関数の入力/Excel.CurrentWorkbook
記事の冒頭でも解説しように、 「=Excel.CurrentWorkbook()」を入力します

上の画像のように3つテーブルが表示されたら、2つ処理をします
まず、上の画像の「Name」の列を削除します

次に下の画像の黄色に印をつけた箇所から、各テーブルの内容を展開します

展開する際には、次に開いた画面にて、「元の列名をプレフィックスとして使用します」のチェックを外しておきます

上の画像のOKボタンをクリックすると次の画像のように、各テーブルが展開します

出荷日については、データ形式を日時型式ではなく、日付形式にしておきます

読み込み処理
読み込み処理は、新規のテーブルに行います

上の画像の「閉じて次に読み込む」をクリックし、次に開いた「データのインポート」画面にて、新規のシートを指定します

新しく追加されたシートは、シート名を「小計」に変更しておきましょう!

データの循環対策
まず、新しく作成したクエリをエディタで開き直します
エディタを開いたら、適用してステップの「ソース」を選択します

すると、下の画像のように4つのテーブルが表示されています

循環対策として、テーブル名に「Data」を含むものだけが展開されるようにフィルターをかけるステップを追加します
フィルターをかける際には、下の画像のように「指定の値で始まる」を指定し、「指定の値」として「Data」を指定します

すると、次の画像のように「Data」から始まるテーブル名のテーブルだけが表示されます

ここまで、行ったらエディタを閉じて読み込みます

シート追加テスト
適切に循環対策が機能しているかどうかを調べるため、「Data_2020年4月」のテーブル、及びシートを追加します

追加するシートには1行だけデータがありますので、循環対策が適切であれば、更新処理時に1行だけが増えるはずです

では、更新を行ってみます

上のGIF画像のように、適切に1行増えています
<まとめ>
今回はM関数「=Excel.CurrentWorkbook()」を 空のクエリを入力して、各シートのテーブルを一括でまとめました
後からテーブル/シートを追加したとしても「データの結合」処理を行わずに済むので大変楽な方法かと思います
但し、1点だけ注意点があり、それが循環対策です
複数のテーブルをまとめた内容自体が、「まとめ」の内容に含まれないようにフィルター処理を追加しました
Power Queryにおけるエラー対策として、フィルター処理はとても有効です
この点は今回を機に、しっかりおさえておきましょう!
長文に最後までお付き合い頂き誠にありがとうございました
今回使用したファイルの完成版を添付しておきます
次回はグループ毎に連番を付与する方法を解説します


コメントを残す