![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/集約-644x483.jpg)
【M言語は難しくない】今回は、空のクエリにM関数を1つ入力するだけで複数シートを一気に結合できるようにします!今回紹介するM関数を使いこなせば、面倒なシート間のデータのバケツリレーから抜け出すことができます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/バケツリレー-644x425.jpg)
Power Queryで複数シートを結合する方法として一般的に紹介されている方法では、次の画像の処理「クエリの追加」が必ず入ると思います
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/クエリの追加.jpg)
今回は、「クエリの追加」は使わず空クエリの数式バーに「=Excel.CurrentWorkbook()」を入力します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/M言語.gif)
1つM関数を入力するだけで、ファイルに含まれるシート内のテーブルが全てエディタ内に反映されます
これで、シート間のバケツリレーの作業からは抜け出すことができます!
但し注意点もありますので、そちらもあわせてM関数/Excel.CurrenWorkBookの使用方法を解説します
目次
今回のポイント
今回はM関数を入力した後に、1点だけ注意点があります
それは、循環問題です
複数シートを1つにまとめた内容/クエリが、M関数に反映されてしまいます
ですので、クエリを更新すると読み込み行数が倍になります
対策として、適用したステップに1つのステップを追加します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/更新.gif)
今回使用するデータ
今回使用するデータには、シートが3つ含まれています
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/使用データ-1.jpg)
1シートが1か月分の出荷データになっています
各シートの内容は、事前に「シート名/Data_y年m月」をテーブル名にしてテーブル化してあります
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/名前の管理.jpg)
次のファイルが今回、実際に使用するサンプルデータです
準備作業/空のクエリを作成
まずは空のクエリから作成します
「データタブ」➡「データの取得」の順でクリックします
その後、下の画像にて黄色に印をつけた箇所を上から順にクリックします
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/Query_Empty.jpg)
そして、下の画像にある「空のクエリ」をクリックします
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/Query_Empty_Go2.jpg)
するとエディタが開き、空のクエリが立ち上がります
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/Editor_Query2.jpg)
M関数の入力/Excel.CurrentWorkbook
記事の冒頭でも解説しように、 「=Excel.CurrentWorkbook()」を入力します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/M関数入力.jpg)
上の画像のように3つテーブルが表示されたら、2つ処理をします
まず、上の画像の「Name」の列を削除します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/削除.jpg)
次に下の画像の黄色に印をつけた箇所から、各テーブルの内容を展開します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/展開.jpg)
展開する際には、次に開いた画面にて、「元の列名をプレフィックスとして使用します」のチェックを外しておきます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/展開2.jpg)
上の画像のOKボタンをクリックすると次の画像のように、各テーブルが展開します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/エディタ-644x161.jpg)
出荷日については、データ形式を日時型式ではなく、日付形式にしておきます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/image-72.png)
読み込み処理
読み込み処理は、新規のテーブルに行います
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/読み込み-1.jpg)
上の画像の「閉じて次に読み込む」をクリックし、次に開いた「データのインポート」画面にて、新規のシートを指定します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/データのインポート.jpg)
新しく追加されたシートは、シート名を「小計」に変更しておきましょう!
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/小計.jpg)
データの循環対策
まず、新しく作成したクエリをエディタで開き直します
エディタを開いたら、適用してステップの「ソース」を選択します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/循環ソース.jpg)
すると、下の画像のように4つのテーブルが表示されています
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/循環対策.jpg)
循環対策として、テーブル名に「Data」を含むものだけが展開されるようにフィルターをかけるステップを追加します
フィルターをかける際には、下の画像のように「指定の値で始まる」を指定し、「指定の値」として「Data」を指定します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/image-73.png)
すると、次の画像のように「Data」から始まるテーブル名のテーブルだけが表示されます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/循環フィルター.jpg)
ここまで、行ったらエディタを閉じて読み込みます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/小計読み込み.jpg)
シート追加テスト
適切に循環対策が機能しているかどうかを調べるため、「Data_2020年4月」のテーブル、及びシートを追加します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/image-74.png)
追加するシートには1行だけデータがありますので、循環対策が適切であれば、更新処理時に1行だけが増えるはずです
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/追加シート.jpg)
では、更新を行ってみます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/更新後.gif)
上のGIF画像のように、適切に1行増えています
<まとめ>
今回はM関数「=Excel.CurrentWorkbook()」を 空のクエリを入力して、各シートのテーブルを一括でまとめました
後からテーブル/シートを追加したとしても「データの結合」処理を行わずに済むので大変楽な方法かと思います
但し、1点だけ注意点があり、それが循環対策です
複数のテーブルをまとめた内容自体が、「まとめ」の内容に含まれないようにフィルター処理を追加しました
Power Queryにおけるエラー対策として、フィルター処理はとても有効です
この点は今回を機に、しっかりおさえておきましょう!
長文に最後までお付き合い頂き誠にありがとうございました
今回使用したファイルの完成版を添付しておきます
次回はグループ毎に連番を付与する方法を解説します
![にほんブログ村 資格ブログ ビジネススキルへ](http://qualification.blogmura.com/businessskill/img/businessskill88_31.gif)
![にほんブログ村 IT技術ブログ VBAへ](http://it.blogmura.com/vba/img/vba88_31.gif)
コメントを残す