「Excelの一覧データを1件ずつ処理できたらいいのに…」
「伝票や帳票に、データを自動で転記したい!」
そんな願いを無料で叶えてくれるツールが、**Power Automate Desktop(PAD)です。
この記事では、PADの中でも超重要なアクション「For Each(フォーイーチ)」**を使って、Excelのデータを1行ずつ処理する手順を実際の画面操作をイメージしながら詳しく解説します!
For Eachアクションとは?
For Eachアクションとは、リストや表(=データテーブル)など、複数のデータを1件ずつ繰り返し処理できるアクションです。
例えば、こんなExcelデータがあるとします:
| 店舗コード | 店舗名 | 地域 |
|---|---|---|
| 001 | イエローマート新宿 | 東京 |
| 002 | グリーンフーズ大阪 | 大阪 |
| 003 | レッドフラワー京都 | 京都 |
このデータを1行ずつ読み込み、メッセージで表示する例を通して、使い方を解説します。
実際の操作ステップ:Excelの全データを1行ずつ表示してみよう
目的
「店舗マスター」シートのデータを1行ずつ表示する。
Step 1. Excelから範囲を読み取る
まずはExcelファイルを読み込みます。
- 「Excelの起動」アクションを追加
- Excelファイルのパスを指定して、ファイルを開きます。
- 「Excelワークシートから範囲を読み取り」アクションを追加
- 範囲指定:
A2:C4(ヘッダーなしのデータ部分) - 結果保存先変数:
dt_StoreList(データテーブル型)
- 範囲指定:
補足:ヘッダー(列名)も含めたい場合は、範囲をA1からにすればOK。
Step 2. For Eachアクションで1行ずつ処理
次に、読み込んだデータをループ処理します。
- 「For Each」アクションを追加
- 処理対象の値:
%dt_StoreList% - カレントアイテム変数:
CurrentRow(※自動で設定される)
- 処理対象の値:
- For Each内に**「メッセージを表示」アクション**を追加
- メッセージ:
店舗名:%CurrentRow[1]% - これは、2列目(インデックス1)にある「店舗名」を表示する指定です。
- メッセージ:
配列は0から始まるので、
CurrentRow[0]→ 店舗コード、CurrentRow[1]→ 店舗名、CurrentRow[2]→ 地域 です。
Step 3. 実行して確認!
フローを保存して実行すると、次のように表示されます:
メッセージ1:店舗名:イエローマート新宿
メッセージ2:店舗名:グリーンフーズ大阪
メッセージ3:店舗名:レッドフラワー京都
データの件数が増えても、自動で1行ずつ処理されます!
応用編:伝票テンプレートに1件ずつ転記したい
目的
上のようなデータを1行ずつ、テンプレートExcelに転記していき、1件ずつ印刷やPDF保存する処理へ応用可能。
転記の基本構成(例)
- Excelテンプレート(伝票.xlsx)を開く
CurrentRow[0]~CurrentRow[2]の値を指定セルに書き込むA2:店舗コードB2:店舗名C2:地域
- 「名前を付けて保存」やPDF化アクションで個別保存
- 次のループへ
このようにFor Eachを軸に組むことで、「1件ずつテンプレートに転記→保存→繰り返し」という業務も簡単に自動化できます!
エラーになりやすいポイント
| よくあるミス | 対処法 |
|---|---|
| データテーブルが空 | 範囲指定が間違っていないか確認(ヘッダー行含めない) |
CurrentRow[1]が空白 | 列数・順番がExcelと一致しているか確認 |
| Excelが開かない | ファイルパスのミス or Excelが既に開いている可能性 |
よくある質問(FAQ)
Q1. 1行のデータを個別に扱いたいときはどうすれば?
A. CurrentRow[0], CurrentRow[1] のようにインデックス指定で取り出して変数に入れると便利です。個別操作しやすくなります。
Q2. データが50行あっても大丈夫?
A. 問題ありません。For Eachは行数に応じて自動で繰り返します。100行でも1000行でも同じフローで処理可能です。
Q3. 空白行があるとどうなりますか?
A. 空白行もCurrentRowとして扱われます。必要であればIfアクションで空白チェックを入れてください。
