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

　前回は、条件に一致したデータを抜き出す処理を行いましたが、今回は項目の内容に応じて、別々のシートに仕分けを行う処理を行っていきます。仕分ける項目には、血液型を使います。
　使用しているエクセルデータは、[ここ](https://spumoni-my.sharepoint.com/:x:/g/personal/fukuyori_spumoni_onmicrosoft_com/Ea8cZoAPEypMkx3n4IIE6UcBC1-0khrUTPOBt5jqcxqDQg?e=zbslAf)です。

# フローはコピペできる

　前回作成したフローで、Excelシートの読み取りまでの5ステップに続けていきます。私の環境では、以下のようになってます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/6d8fbe81-d93f-086f-72a6-40429a7be04e.png)

フローは、以下のようにコピペすると、コードを見ることができます。
![motion1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/85bda29d-fe5c-079e-13a8-936592b0958e.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/5b5ebe53-b04d-bf71-c247-86270714e6b2.gif)

# 血液型のリストを作成
　仕分けを行う前に、新しいシートを作成しておきます。今回は、血液型で振り分けを行います。
　アクションペインから **「データテーブル列をリストに取得」** を選び、データテーブル「**ExcelData**」から血液型の項目をリストにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/a90f3e9c-025f-b180-6479-e5a74417309e.png)
　新しくできた変数 **ColumnAsList** には、重複する値がありますので、 **「リストから重複する項目を削除」** を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/cf190e83-cc61-f747-a52d-9bbb34578e98.png)
　これで、以下のようなリストが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/d4504f0d-f5ee-05c1-21e6-080658e46c40.png)

# 項目名は一気に貼り付ける
　新しいシートの1行目には項目名を入れたいのですが、前回のように **For each** で作成すると、時間がかかります。項目名のセルの値だけを別に読み取って、一気に貼り付けたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/eb4adb94-7170-99fc-3221-451ed8625cb4.png)

# リストを使って新しいシートを作成
　血液型のリスト **ColumnAsList** を使って、**For each** で新しいシートを作っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/22bc5fa7-85a7-0fe1-53fc-5845226729ce.png)
　**For each**と**End**の間に、新しいワークシートの追加を行います。シート名は、血液型と同じにしますので、新しいワークシート名の項目に **%CurrentItem%** と入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/d080a971-1178-4296-e73d-72f92f4a268c.png)
　次に、先ほど取得した項目名 **ExcelData2** を貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/49a17b3a-985c-24f8-d52a-f708e2f6cfd6.png)
 次の書き込み位置をアクティブにしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/3758c757-5e01-e286-5028-555530100f03.png)

# これまでの処理をテスト
![motion3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/ec195b51-9278-4c63-631f-7aaf5c14804e.gif)

# シートを選択してデータの書き込み
　データの書き込みを行うために、**ExcelData**を**For each**でループさせます。変数 **CurrentItem2** には、1行ごとのデータが入ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/6c34cf6d-f2d8-f49b-b6b5-d39577ad436c.png)
　データを書き込むシートを選択するために**「アクティブなExcelワークシートの設定」**を選びます。アクティブにするワークシートは、名前で選択し、血液型でワークシートを選択します。血液型を取得するには、以下のように **CurrentItem2** の中の **血液型** の項目を参照するように指定します。

```
%CurrentItem2['血液型']%
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/d313aad9-1f94-18b9-62b7-3610b9fa8cb4.png)

　以降は、#3でやったのと同様に、**現在のアクティブなセル上**にデータを書き込んで、**相対位置で指定した** 1行下のセルをアクティブにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/6c87ba6d-af30-987f-846b-ea1b76aaf870.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/f2a38e2f-92d1-fe42-9426-0d2d1757164f.png)

　以上で出来上がりです。

# 完成
　出来上がったフローは以下のようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/cf290bc1-aeb3-b7ac-db65-549935722b71.png)
　データの書き込みを5倍速でお送りいたします。
![motion4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864075/472cbb6d-1c00-8e26-2ae6-59256014afd6.gif)