前回は、条件に一致したデータを抜き出す処理を行いましたが、今回は項目の内容に応じて、別々のシートに仕分けを行う処理を行っていきます。仕分ける項目には、血液型を使います。
使用しているエクセルデータは、ここです。
フローはコピペできる
前回作成したフローで、Excelシートの読み取りまでの5ステップに続けていきます。私の環境では、以下のようになってます。
フローは、以下のようにコピペすると、コードを見ることができます。
中身は以下のようになってます。ファイルの置き場所を示す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
これを以下のように、別のフローに貼り付けることも出来ます。もちろん、メモ帳を経由しなくてもできます。
血液型のリストを作成
仕分けを行う前に、新しいシートを作成しておきます。今回は、血液型で振り分けを行います。
アクションペインから 「データテーブル列をリストに取得」 を選び、データテーブル「ExcelData」から血液型の項目をリストにします。
新しくできた変数 ColumnAsList には、重複する値がありますので、 「リストから重複する項目を削除」 を選びます。
これで、以下のようなリストが作成されます。
項目名は一気に貼り付ける
新しいシートの1行目には項目名を入れたいのですが、前回のように For each で作成すると、時間がかかります。項目名のセルの値だけを別に読み取って、一気に貼り付けたいと思います。
リストを使って新しいシートを作成
血液型のリスト ColumnAsList を使って、For each で新しいシートを作っていきます。
For eachとEndの間に、新しいワークシートの追加を行います。シート名は、血液型と同じにしますので、新しいワークシート名の項目に %CurrentItem% と入れます。
次に、先ほど取得した項目名 ExcelData2 を貼り付けます。
次の書き込み位置をアクティブにしておきます。
これまでの処理をテスト
シートを選択してデータの書き込み
データの書き込みを行うために、ExcelDataをFor eachでループさせます。変数 CurrentItem2 には、1行ごとのデータが入ります。
データを書き込むシートを選択するために**「アクティブなExcelワークシートの設定」**を選びます。アクティブにするワークシートは、名前で選択し、血液型でワークシートを選択します。血液型を取得するには、以下のように CurrentItem2 の中の 血液型 の項目を参照するように指定します。
%CurrentItem2['血液型']%
以降は、#3でやったのと同様に、現在のアクティブなセル上にデータを書き込んで、相対位置で指定した 1行下のセルをアクティブにします。
以上で出来上がりです。