LoginSignup
1
5

More than 1 year has passed since last update.

Power Automate Desktopがなんとなく使える講座 #4 Excelデータの仕分処理

Last updated at Posted at 2021-04-24

 前回は、条件に一致したデータを抜き出す処理を行いましたが、今回は項目の内容に応じて、別々のシートに仕分けを行う処理を行っていきます。仕分ける項目には、血液型を使います。
 使用しているエクセルデータは、ここです。

フローはコピペできる

 前回作成したフローで、Excelシートの読み取りまでの5ステップに続けていきます。私の環境では、以下のようになってます。
image.png

フローは、以下のようにコピペすると、コードを見ることができます。
motion1.gif

中身は以下のようになってます。ファイルの置き場所を示すPathは、それぞれなので、読み替えが必要です。自分のお気に入りのフローは、このように保存しておくのもいいでしょう。

Excel.LaunchAndOpen Path: $'''D:\\User\\Downloads\\personal_information.xlsx''' Visible: True ReadOnly: False LoadAddInsAndMacros: False Instance=> ExcelInstance
Excel.Advanced.GetAllWorksheets Instance: ExcelInstance Worksheets=> SheetNames
Excel.ActivateWorksheetByName Instance: ExcelInstance Name: SheetNames[0]
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Excel.ReadCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: FirstFreeColumn - 1 EndRow: FirstFreeRow - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData

これを以下のように、別のフローに貼り付けることも出来ます。もちろん、メモ帳を経由しなくてもできます。
motion2.gif

血液型のリストを作成

 仕分けを行う前に、新しいシートを作成しておきます。今回は、血液型で振り分けを行います。
 アクションペインから 「データテーブル列をリストに取得」 を選び、データテーブル「ExcelData」から血液型の項目をリストにします。
image.png
 新しくできた変数 ColumnAsList には、重複する値がありますので、 「リストから重複する項目を削除」 を選びます。
image.png
 これで、以下のようなリストが作成されます。
image.png

項目名は一気に貼り付ける

 新しいシートの1行目には項目名を入れたいのですが、前回のように For each で作成すると、時間がかかります。項目名のセルの値だけを別に読み取って、一気に貼り付けたいと思います。
image.png

リストを使って新しいシートを作成

 血液型のリスト ColumnAsList を使って、For each で新しいシートを作っていきます。
image.png
 For eachEndの間に、新しいワークシートの追加を行います。シート名は、血液型と同じにしますので、新しいワークシート名の項目に %CurrentItem% と入れます。
image.png
 次に、先ほど取得した項目名 ExcelData2 を貼り付けます。
image.png
次の書き込み位置をアクティブにしておきます。
image.png

これまでの処理をテスト

motion3.gif

シートを選択してデータの書き込み

 データの書き込みを行うために、ExcelDataFor eachでループさせます。変数 CurrentItem2 には、1行ごとのデータが入ります。
image.png
 データを書き込むシートを選択するために「アクティブなExcelワークシートの設定」を選びます。アクティブにするワークシートは、名前で選択し、血液型でワークシートを選択します。血液型を取得するには、以下のように CurrentItem2 の中の 血液型 の項目を参照するように指定します。

%CurrentItem2['血液型']%

image.png

 以降は、#3でやったのと同様に、現在のアクティブなセル上にデータを書き込んで、相対位置で指定した 1行下のセルをアクティブにします。
image.png
image.png

 以上で出来上がりです。

完成

 出来上がったフローは以下のようになりました。
image.png
 データの書き込みを5倍速でお送りいたします。
motion4.gif

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5