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