【一度作成したクエリを関数化して複数シートに使いまわし、結果的に一括処理する】
エクセルファイル内で複数シートに分かれていると、一括処理ができなくて困ることがあります
一番、困るのは各シートにヘッダーデータがあるようなケースです
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-11.png)
このような場合はまずは1シートを処理するクエリを作成します
そして、そのクエリを関数化します
関数化するということは、Y=2X+1のような式で表せるということです
こちらのXには複数シート名を入れて使いまわせるようにします
SUM関数/SUM()では()の中身を変えれば、それぞれの合計が出力されます
今回は、()の中身が次から次へと格納されて、連続的に出力されるイメージになります
使用データ
前述のように各シートにはヘッダーデータがあります
その下に欲しい一括処理したいデータがあります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-12-644x345.png)
そして、上記のようなシートがファイル内に複数あります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-13.png)
各シートの開始行などは一致している前提です
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-37.png)
上の画像は東京のシートですが、次の画像は大阪のシートです
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-38.png)
関数化するクエリの作成
まずは1シートを処理するクエリを作成します
こちらのクエリを前述のように関数化します
今回はテーブル化からはじめず、ファイルからデータを取得します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-14-644x272.png)
指定するファイルは「今処理しているファイル」です
ファイルを指定したら、ナビゲーター画面が開きます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-15.png)
こちらでは1つのシートを指定し「データの変換」をクリックします
ここでクエリは複製しておきます(1つは関数を作成した後に、関数を適用するクエリになります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-17.png)
下の画像がPower Queryエディタを開いた状態です
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-16.png)
必要なのは11行目から下です
こちらは「行の削除」アクションで10行削除します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-18.png)
ここからもう1アクションあります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-19-644x334.png)
変換タブで「1行目をヘッダーとして使用」アクションを使用して、見出しを整えます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-20.png)
これで関数化のもとになるクエリは完成です
関数化
関数化は詳細エディタで行います
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-21.png)
具体的に関数化する箇所は「可変の箇所」、シート名の箇所です
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-22.png)
ここでソースステップの内容を確認しておきましょう
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-23-644x159.png)
要はファイル内の複数シートを取得しています
ここからナビゲーション画面で1つのシートを選択しています
ですので、作成した関数を適用する場合は「東京、大阪、名古屋」と関数化した箇所に連続して格納されるようにすればいいのです
では実際に記号Xを埋め込んでみましょう
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-24.png)
(X)=>はXを記号として使用するという合図になります⇒詳細
ここまで行うとクエリが関数に変ります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-25-644x319.png)
関数は「myFunction」と名前を変えておきましょう
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-26.png)
ここでパラメーターに「名古屋」と入れてみましょう
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-27-644x253.png)
これで名古屋のシートデータが変換されて出力されます
関数の適用
ここで関数の複製元のクエリを選択し直します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-28.png)
その後は、適用したステップでソースデータを残して後は全て削除します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-29.png)
ここから列の追加タブで作成済みの関数を呼び出します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-30.png)
関数のXに入るのは「Item」になります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-31-644x501.png)
これでXに東京、大阪、名古屋と値が格納され、クエリが作成されていくことになります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-32.png)
結果、次の画像のようになります
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-34-644x234.png)
ここからmyFunctionを展開すれば完成です
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-35.png)
次の画像が展開した後のものです
![](https://analytic-vba.com/wp/wp-content/uploads/2023/08/image-36-644x197.png)
<まとめ>
今回は、ヘッダー行がある複数シートを、クエリの関数化を使用して一括処理しました
クエリの関数化のポイントは可変の箇所を見つけることです
今回は、1度作成したクエリから可変の箇所を見つけました
そうはいっても、なかなか最初は慣れないかと思いますが、次第にツボが見えてくると思います
もう少し詳しく「クエリの関数化」について知りたいという方はぜひUdemy講座(動画)もご利用ください
期間限定で「4,800⇒1,200」の割引クーポンが利用できます