PowerQuery【14】PowerQueryでRPA用データを作る

PowerQueryへのリンク
PowerQuery全体:PowerQuery【01】PowerQuery(パワークエリー)で出来ること
PowerQueryの手順:PowerQuery【02】PowerQuery(パワークエリー)の動かし方

RPA処理の基礎データを作る

PowerQueryを使い始めて3ヶ月経ちましたが、
「PowerQueryでPowerQueryのデータを作る」というのを結構な頻度で使っています。

そもそもRPA用の基礎データとは何か。

RPAは、処理の全てを、以下いずれかに落とし込む必要があります。
①ロボットそのものの構築(例えばUiPathのやWinActorのシナリオ作成)
②ロボットを実行するための「データリスト」
特に②については、Excel等で作ることが多いのですが、「処理1件」に対応して「1行ずつ」全件データを作る必要があるのです。

例えば人への依頼だったら、「 『A~D』までの範囲それぞれで、『01~03』の処理をお願い」と言えば
「A~Dについて、01~03まで 4×3=計12件の処理をする」と理解して、適宜処理してくれますが、
ロボットへの依頼では、『A01、A02、A03、B01、…D03』と処理すべき行を全て用意する必要があるのです。

全件データを作るというのは結構めんどくさくて、従来はAccessで作っていた※のですが、
いったん作ると何度も使い回せる点も含めてPowerQueryは便利です。

※Accessで作るとき:敢えて結合線を付けずに、テーブルを二つ並べると、総当たりでデータが出来る。

実際に作っている事例をお見せします。

1.RPA用の全件データを作る

(1)ニーズ

以下のような事例です。3名×6ヶ月、計18回の処理をすべく、RPA処理用のデータを作る必要があります。

(2)2つのテーブルの準備とクエリ読み込み

①年月テーブルと氏名テーブルをそれぞれ作成する。
②結合させるためのダミー列を追加する。

PowerQueryで対応できるように、それぞれにダミー用のKey列を追加して、
同じ数値(例えば「1」)を入力しておきます。
(数値でなくても、文字でも同じ値であれば大丈夫です。)

③二つのテーブルをクエリ変換する。

テーブル範囲を選択して、データタブ/テーブルまたは範囲から
/PowerQueryエディタが起動するので、クエリ名等を修正
/閉じて読み込む

(3)マージ(結合)

IDのクエリのどこかにカーソルを合わせて、
クエリ/結合
マージ画面が表示されたら、ダミー用のKey列を「キー(Key)」に選択して、
「完全外部(両方の行すべて)」で結合させる。

(4)2つめのテーブルを展開

結合テーブルの展開ボタンをクリックして、年・月を展開する。

(5)2つのテーブルが展開され、必要な行数が表示されたのを確認

(6)RPA用に列を移動

この場合は「年」「月」列を先頭に移動

(7)RPA用にソート(行の並び替え)を行う

ソートしたい順にクリックすると、「ソートアイコン」の左隣に、ソートの優先順位が表示される。
↓クリックすると拡大します。

(8)出来上がり

このデータをRPAの処理用のExcelに貼り付ける

2.横のマトリックス表を縦にする

これもRPAの事例です。
以下は権限を設定するRPAを動かす前の処理ですが、
入力シート(マトリックス表)を作り、まず人の手で「誰に何の権限をつけるか」を、フラグ立てします。
この入力シートを、縦型の「RPA入力用シート」に変換します。(列のピボット解除を使います。)

詳しい手順は、PowerQuery【10】Pivotテーブルを縦展開する をご参照ください。