Power Automate Desktop

Power Automate DesktopでExcel操作・指定した条件でデータ抽出してみた!

Power Automate Desktop

Power Automate Desktopを使って、Excelから指定した条件でデータ抽出するロボットの作り方を解説します。

ロボット作成の難易度
レベル:初心者
作成時間:約5分

用意するもの
Excelブック(マスターテーブル)
Excelブック(転記用)

U-ROOm
U-ROOm

それではさっそくいってみましょう!

指定した条件でデータ抽出するロボットの概要

 

今回作成するのは、Excelのマスターテーブルから指定の条件に該当したデータを抽出し、別のExcelブックに転記するロボットです。

例えば以下のようなExcelのマスターテーブルがあります。

ゆっさん
ゆっさん

俺の管理しているモー娘。歴代メンバーリストじゃねえか!

 

モー娘。歴代メンバーリストから、指定の誕生月に該当するメンバーを抽出し、別のエクセルに転記します。

例:8月生まれを条件としたデータ抽出

 

ロボットの動作はこちらの動画で確認できます。

U-ROOm
U-ROOm

それでは早速作っていきましょう!

指定した条件でデータ抽出するロボットの作成手順

 

まずは作業工程を洗い出します。

今回は全6工程です。

【作業工程表】

 

U-ROOm
U-ROOm

①から順番に組み立てていきましょう!

作業工程① マスターのExcelを起動する

 

まずは、マスターであるモー娘。歴代メンバーリストのExcelを開きたいので、「Excelの起動」アクションをフローに設定します。

 

設定と同時にパラメーターの選択画面が開くので、マスターが格納されているパスを指定します。

マスターのExcelは、「ExcelInstance」という変数名が割り当てられました。後の工程で別途、転記用のExcelを立ち上げるので、変数名で区別します。

作業工程② マスターデータをPADに読み込む

次に、Excelワークシートからデータ範囲を取得するために、「Excelの最初の空の行や列を取得」アクションを設定します。

 

パラメーターの選択画面はこちら。

 

このアクションを追加することで、取り込むデータの最初の空の列が「FirstFreeCulumn」、最初の空の行が「FirstFreeRow」として変数に格納されます。

 

最初の空の行列の取得を設定したら、次に「Excelワークシートから読み取り」アクションを追加します。

 

パラメーターの選択画面が開くので設定します。

設定内容は、

  • Excelインスタンスは「%ExcelInstance%
  • 取得は「セル範囲の値
  • 先頭列は「1」または「A
  • 先頭行は「1
  • 最終列は「%FirstFreeCulumn-1%
  • 最終行は「%FirstFreeRow-1%
  • 詳細をクリックし、”範囲の最初の行に列名が含まれています”をアクティブにする

ここで新たに変数「ExcelData」が生成されました。生成された変数「ExcelData」には、取り込んだモー娘。リストデータが格納されます。

 

変数「ExcelData」の中身は、PADの画面右側の「フロー変数」という領域からチェックできます。

 

変数「ExcelData」をクリックすると、

 

変数「ExcelData」に格納されている中身を確認できます。

 

取込を確認したら、マスターのExcelはもう使わないので閉じます。Excelを閉じる」アクションを追加し、

 

パラメーターの選択画面で”Excelを閉じる前に”を「ドキュメントを保存しない」に設定します。

作業工程③ 転記用のExcelを起動する

転記用のExcelの起動は、作業工程①のやり方と同じく「Excelを起動」アクションをフローに設定します。

 

この時、最初に立ち上げたマスターExcelの「ExcelIstance」と区別するため、新たな変数「ExcelIstance2」が生成されています。

作業工程④ 前回実行時の転記データを削除する

転記用のExcelを開くと、前回実行したときのデータが残っているので、範囲を選択して削除します。

 

削除にあたり転記用シートの1行目を除くデータ範囲PADに読み込む必要があります。

転記用シートはA列からC列までのフィールド部分は毎回固定ですが、レコードの行数に関しては実行月によって変化します。

ゆっさん
ゆっさん

列は固定だから、最初の空の行だけ取得して変数に格納すればいいってことだな!

最初の空の行だけを取得するアクションは「Excelワークシートから列における最初の空の行を取得」です。

 

パラメータの選択画面を設定します。

  • Excelインスタンスを「%Excelinstance2%
  • 列を「1」または「A

 

これで、1列目の最初の空の行が、変数「FirstFreeRowOnColumn」に格納されました。

 

最初の空の行を変数に格納したら、データを削除するセル範囲を指定するため、「Excelワークシート内のセルを選択」アクションを追加します。

 

パラメーターの選択画面が開くので、

  • Excelインスタンスは「%ExcelInstance2%
  • 取得は「絶対位置で指定したセル
  • 先頭列は「A」または「1」
  • 先頭行は「2」(※1行目は項目名のため2行目から)
  • 最終列は「C」または「3」
  • 最終行は「%FirstFreeRowOnColumn%

と設定します。

「%FirstFreeRowOnColumn-1%」と設定しないのはなぜ?

抽出条件によっては、該当するデータが存在しないケースがあります。この場合、「%FirstFreeRowOnColumn-1%」と設定してしまうと1行目の項目名が削除されてしまいます。そのため「%FirstFreeRowOnColumn%」とそのまま設定しています。

削除するセル範囲を指定したら、今度はDeleteを実行するべく「キーの送信」アクションを追加します。

 

パラメーターの選択画面で①「特殊キーの挿入」→②「その他」→③「Delete」と進み、「送信するテキスト」欄に「Delete」を設定します。

これで、転記用シートの前準備が整いました。

U-ROOm
U-ROOm

ここまでで実行してみて、動作確認を行いましょう

作業工程⑤ 条件に合致したデータを抽出する

抽出条件は、今現在の月が誕生月と一致することです。

今現在(フロー実行現時点)の月 = 誕生月

例えば、2021年9月12日にフローを実行した場合、「9月」が抽出条件となります。歴代メンバーの中から9月生まれのメンバーが抽出対象となります。

テーブルデータには各メンバーごとの「誕生月」が記録されています。

誕生月のリストを、上の行から下の行に向かって順番に条件判定していきます。

条件判定で使用するアクションは「日時」「Loop」「If」です。

 

「日時」アクションの設定

「日時」アクションをフローに追加します。

 

パラメーターの選択画面を設定します。

  • 取得は「現在の日付のみ
  • タイムゾーンは「システムタイムゾーン

現在の日時が変数「CurrenDataTime」に格納されました。

 

「Loop」アクションの設定

Loopアクションは、データの数だけ同じ処理を繰り返すアクションです。

 

パラメーターの選択画面から設定を行います。

開始値は、変数「ExcelData」の1つめのデータレコードです。入力する値は「0」になります。

 

ゆっさん
ゆっさん

え?一つ目のデータなら「0」じゃなくて「1」なんじゃねーの?

 

ここが注意すべきところです。フロー変数領域から、変数「ExcelData」をクリックし内容を確認すると、1行目のデータレコードは「0」であることがわかります。

このため、開始値は「0」からスタートします。

 

「終了」の値は、変数ExcelDataの最終レコードになります。「ExcelData.RowsCount」と入力するとレコード総数が取得できます。

ただしこちらも、開始値が「0」からスタートしていることを考慮し、「%ExcelData.RowsCount-1%」と入力します。

ゆっさん
ゆっさん

開始値が「0」だから、1個ずれてんだな。

「増分」の値は、1行ずつ判定させたいので「1」と入力します。

ここまで入力し保存をおすと、ループ処理を行うデータ数が格納された変数「LoopIndex」が生成されます。

 

フロー変数領域から、変数「LoopIndex」をクリックし内容を確認すると、44が格納されており、データ数は44であることがわかります

ゆっさん
ゆっさん

おお!歴代メンバー総数44人と一致しているぞ!

「If」アクションの設定

次に「If」アクションを使ってデータを条件判定します。「If」アクションはLoopとEndの間に設定します。

 

「If」アクションのパラメーターの選択画面が開いたら、

  • 最初のオペランドは「%ExcelData[LoopIndex][‘誕生月’]%
  • 演算子は「と等しい
  • 2番目のオペランドは「%CurrentDateTime.Month%

と設定します。

2番目のオペランドの設定画面の詳細

「%ExcelData[LoopIndex][‘誕生月’]%」は、ExcelDataの中の誕生月の値で、「%CurrentDateTime.Month%」は、今現在の月の値を表します。

これで、今現在の該当月と誕生月が一致しているかを判定する条件設定がされました。

作業工程⑥ 条件に一致したデータをExcelに転記する

「If」判定によって、条件に一致したデータを、転記用のExcelブック「誕生月メンバー.xlsx」に転記していきます。

「Excelワークシートに書き込み」アクションをIfとEndの中に追加します。

 

転記シート1列目には今現時点が誕生月である対象者氏名を転記します。

パラメーターの選択画面で、

  • Excelインスタンスは「%ExcelInstance2%
  • 書き込む値は「%ExcelData[LoopIndex][‘氏名’]%
  • 書き込みモードは「指定したセル上
  • 列は1列目なので「1
  • 行は変化するので変数「%NewVar%

と設定します。

※変数NewVarの設定詳細は別記事で解説しています。

 

転記シート2列目には対象メンバーの生年月日を、

 

3列目には年齢を転記します。

 

U-ROOm
U-ROOm

フローの作成はここまでです。

抽出結果・今月(9月)誕生月のモー娘。メンバーは誰?

 

さっそく、完成したフローを実行してみると・・・・・

当月(9月)誕生日の該当メンバーは2人!

「後藤真希」さんと「高橋愛」さんでした。

 

ゆっさん
ゆっさん

おおおおおおおおおおおおおおおおおおお!歴代メンバーの中でもレジェンドと言われている二人じゃねーか!9月生まれすげーな!

補足:後藤真希と高橋愛が豪華コラボ!

なんと今回抽出対象となった9月生まれのお二方が、約20年ぶりに一緒にパフォーマンスしていました!

ゆっさん
ゆっさん

HO~、ほら行っこっうっぜ~!!!!そうさ、みんな行こうぜ!ピース!ピース!

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
ゆっさん
ゆっさん

(実はこれを一番伝えたかった)

まとめ

 

以上、「Power Automate DesktopでExcel操作・指定した条件のデータを抽出する方法」をお送りしました。

U-ROOm
U-ROOm

Power Automate Desktopでのデータ抽出!ぜひお試しあれ~。

この記事を書いた人
U-ROOm

システム開発会社にて、バックオフィス全般を担当する会社員です。

U-ROOmをフォローする
スポンサーリンク
シェアする
U-ROOmをフォローする
ゆるむ U-ROOm
タイトルとURLをコピーしました