Power Automate Desktop Excelデータの列単位をループ転記

タイトル画像
スポンサーリンク
スポンサーリンク

今回はExcelブックから必要なデータをPADに読み込み、アクションのFor eachを使用して、Excelブックから読み込んだデータを、行数分1行ずつ繰り返す処理を行い、繰り返している行から必要なデータを別のExcelブックに列単位で転記します。

For each」は「Loop」と違い、複数の値を持つテーブルなどを、行数分1行ずつ繰り返す処理を行うことが出来ます。

For each」アクションのループ処理で1行ずつ、ExcelデータをFor eachの変数に格納します。

For eachの変数に格納されたExcelデータを「Excelワークシートに書き込み」アクションで指定したセルに転記します。

●アクションの流れ

1.特別なフォルダーを取得
2.Excelの起動
3.Excelワークシートから読み取り
4.Excelを閉じる
5.Excelの起動
6.Excelワークシートに書き込み
7.For each
8.Excelワークシートから最初の空の列や行を取得
9.Excelワークシートに書き込み
10.End

●表から転記したいデータを、新しいExcelブックに転記します。

読み取りするExcelデータ

今回は氏名と基本給を別のExcelブックに転記します。

列単位を転記

フローの完成形

フローの完成形

実行動画

1.特別なフォルダーを取得

1.アクションの「フォルダー」から「特別なフォルダーを取得」をワークスペースにドラッグ&ドロップします。

特別なフォルダーを取得のパラメータ選択

私の場合はデスクトップのフォルダーにファイルを保存しているので、「特別なフォルダーの名前:デスクトップ」にしました。

特別なフォルダーを取得の詳しい説明は別の記事に掲載しております。該当記事はこちら

2.Excelの起動

Power Automate Desktopに読み取るExcelブックを選択します。

1.アクションの「Excel」から「Excelの起動」をワークスペースにドラッグ&ドロップします。

Excelの起動

ドキュメントパスに、ファイルが保存されている場所を指定します。

3.Excelワークシートから読み取り

Excelブックのワークシートから、読み取りたいセル範囲を設定します。

1.アクションの「Excel」から「Excelワークシートから読み取り」をワークスペースにドラッグ&ドロップします。

Excelワークシートから読み取り

取得:ワークシートに含まれる使用可能なすべての値

今回は単純な表形式で、タイトルや他に余計な数値も無いので、セル範囲ではなく、ワークシートに含まれる使用可能なすべての値を選択しました。

詳細:範囲の最初の行に列名が含まれています 

列名を取得したいので、チェックを入れます。

すべてのワークシートを読み取りたい場合は、別の記事に掲載している「全てのワークシートからExcelDataを読み取る」を参照願います。

4.Excelを閉じる

1.アクションの「Excel」から「Excelを閉じる」をワークスペースにドラッグ&ドロップします。

Excelを閉じる

ドキュメントを保存しないでExcelを閉じます。

5.Excelの起動

転記先の空のExcelブックを開きます。

1.アクションの「Excel」から「Excelの起動」をワークスペースにドラッグ&ドロップします。

Excelの起動 空のドキュメントを使用

空のドキュメントを使用します。

生成された変数「ExcelInstance2

6.Excelワークシートに書き込み

空のExcelブックに列名を転記します。

1.アクションの「Excel」から「Excelワークシートに書き込み」をワークスペースにドラッグ&ドロップします。

Excelワークシートに書き込みのパラメータ選択

Excelインスタンス:先ほどExcelの起動で、生成された変数「ExcelInstance2」を使用します。

書き込む値%ExcelData.ColumnHeadersRow%と入力します。
※ExcelDataの変数に格納されている、列名のデータをセルに書き込みます。

Excelワークシートに書き込み

書き込みモード:セルを指定したいので「指定したセル上」を選択します。
1行目に見出しを書き込みたいので「」に「A」、「」に「1」を入力します。

ExcelのセルA1に書き込み

7.For each

For each」アクションのループ処理で1行ずつ、Excelデータを変数Currentltemに格納します。

1.アクションの「ループ」から「For eachをワークスペースにドラッグ&ドロップします。

For each

反復処理を行う値:Excelワークシートから読み取りで生成された変数 %ExcelData%を入力します。
※今回生成された変数:CurrentltemにExcelDataが1行ずつ格納され、ループします。

8.Excelワークシートから最初の空の列や行を取得

9.「Excelワークシートに書き込み」で空白行を取得するため、「Excelワークシートから最初の空の列や行を取得」のアクションを設置します。

1.アクションの「Excel」から「Excelワークシートから最初の空の列や行を取得」を「For each」の中にドラッグ&ドロップします。

Excelワークシートから最初の空の列や行を取得

Excelインスタンス:ExcelInstance2
生成された変数 FirseFreeRow(行)を次のアクションで使用します。

9.Excelワークシートに書き込み

今回は氏名と基本給を別のExcelブックに転記します。

列番号で書き込む方法と、列名を使用する方法をご紹介します。

●まずは、列番号を使用して書き込みます。

1.アクションの「Excel」から「Excelワークシートに書き込み」を「Excelワークシートから最初の空の列や行を取得」の下にドラッグ&ドロップします。

Excelワークシートに書き込みのパラメータ選択

Excelインスタンス:先ほどExcelの起動で、生成された変数「ExcelInstance2」を使用します。

書き込む値%Currentltem[3]%と入力します。

「氏名」を空のExcelブックに転記してみます。
列番号を使用して転記します。
For eachCurrentltemにExcelDataが1行ずつ格納されているので、Currentltemから列番号の[3](氏名)を書き込む値に入力します。

※注意点としてPADの場合は、0から始まりますので、社員番号が0になり、氏名が3になります。

列番号

書き込みモード:セルを指定したいので「指定したセル上」を選択します。
今回は列Dに書き込みたいので「」に「D」、「」に「%FirstFreeRow%」を入力します。
行に氏名を書き込む時に、入力された氏名が上書きされないように、空白のセルに書き込みを行います。
「Excelワークシートから最初の空の列や行を取得」した変数FirstFreeRowを入力し、空白行を取得します。

列に書き込み

●次は列名を使用して、基本給を転記します。

1.アクションの「Excel」から「Excelワークシートに書き込み」を「Excelワークシートに書き込み」の下にドラッグ&ドロップします。

Excelワークシートに書き込みのパラメータ選択

書き込む値%Currentltem[‘基本給’]%と入力します。

「基本給」を空のExcelブックに転記してみます。
列名を使用して転記します。

※注意点として[‘列名’]のように、文字の場合は点が1つの引用符'(シングルクォーテーション)で囲みます。

列見出し

書き込みモード:セルを指定したいので「指定したセル上」を選択します。
今回は列Dに書き込みたいので「」に「E」、「」に「%FirstFreeRow%」を入力します。

基本給

以上でExcelブックからデータを取得して、For eachで1行ずつループし、別のExcelブックに列単位で転記する方法をご紹介しました。

今回は列単位のデータを転記しましたが、次回は条件を指定して、行単位のデータを転記する方法をご紹介します。

例として社員番号を入力して、該当した番号の行データを転記する方法をご紹介します。

続きの記事はこちら

タイトルとURLをコピーしました