データテーブルの各行をリストにまとめる(行と列の参照を図解)
氏名・部署の2列表を行データのリストへ追加する練習です。元の表と出力を図で比べ、先頭行の部署の参照、0件時の分岐、列だけを取得する場合との違いを確認します。
画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。
実行前に確認
- RowsList.Count は行データの項目数です。2列×2行でも Count=2で、4セルを平らに並べたリストではありません。
- 位置0は先頭、位置1は2番目です。行の列番号0は氏名、1は部署で、リストの項目位置とは別の番号です。存在しない位置や列名は参照しません。
- 同じ行が複数あっても、この手順では重複を削除しません。リスト作成を飛ばして追加部分だけ再実行すると、以前の項目に追記されます。
- 行データと元の表を後から編集した場合の独立したコピーは、この練習では保証していません。入力の表を変えずに収集と参照を確認する例です。
- 部署など1列だけが必要なら、関連記事「データテーブルの1列をリストにする」を使います。行全体を直接 For each で処理できる用途では、RowsList の作成は必須ではありません。
- 図・比較表は設定から求めた期待値で、実際のPower Automateフローを実行した結果ではありません。
1使うアクション
- アクション 1新しいデータ テーブルを作成するDataTable:氏名・部署の2列2行
- アクション 2新しいリストの作成RowsList を空にする(ループの前)
- アクション 3For eachDataTable の各行 → CurrentRow
- アクション 4項目をリストに追加CurrentRow 全体 → RowsList
- アクション 5EndFor each の終わり
- アクション 6IfRowsList.Count が 0 より大きい
- アクション 7変数の設定FirstRow = %RowsList[0]%
- アクション 8メッセージを表示%FirstRow['部署']% → 営業
- アクション 9Else0件のとき
- アクション 10メッセージを表示対象の行がありません
- アクション 11EndIf の終わり
図で見る処理のイメージ
概念図表の1行を1項目として集めます。まず2行の形を確認し、行を選んでから部署を参照します。
2列2行の表 → 行データ2件のリスト
入力:DataTable
| 氏名 | 部署 |
|---|---|
| 佐藤 | 営業 |
| 鈴木 | 総務 |
1行に氏名と部署の2つの値
出力:RowsList
- 位置0佐藤 / 営業
- 位置1鈴木 / 総務
Count=2。各項目は1行分の組です。
%RowsList[0]% → FirstRow:佐藤/営業
%FirstRow['部署']% → 営業
先に件数を確認
1件以上:先頭行の部署を表示
0件:「対象の行がありません」を表示
RowsList は行データ2件。先頭の行を FirstRow に取り出すと、部署の値は「営業」です。0件なら行を読まず「対象の行がありません」と表示します。
狭い画面では表を横にスクロールして、件数と分岐を比べられます。
| 練習条件 | リストの件数 | 最後の分岐・表示 | 確認すること |
|---|---|---|---|
| 基本:佐藤/営業、鈴木/総務 | 2 | 成立側 → 営業 | 氏名と部署の組を保つ |
| 先頭行を鈴木/総務に入れ替える | 2 | 成立側 → 総務 | 先頭行の値を読む |
| 佐藤/営業を3行目にも追加する | 3 | 成立側 → 営業 | 重複行も残る |
| 練習変数をクリアして0行にする | 0 | Else → 対象の行がありません | 位置0を参照しない |
| 誤設定:CurrentRow[0] だけを追加 | 2 | 行データの参照を行わない | 氏名の文字列リストになるため設定を直す |
行データの収集と参照の概念図です。実際の実行画面ではありません。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する10ステップの設定と確認方法
- 1
準備:WindowsのPower Automate for desktopで、Power Fxをオフにした練習用フローを作ります。以下は従来の %変数名% 記法です。組織の利用許可・サインイン条件を確認してください。ローカルの変数と画面表示だけを使うため、Excel接続・外部サービス・有料コネクタは使いません。クラウドからの起動や無人実行のライセンス条件は別です。
- 2
「新しいデータ テーブルを作成する」のビジュアルエディターで、列見出しを「氏名」「部署」、データ行を「佐藤/営業」「鈴木/総務」にします。生成された変数を DataTable にします。氏名は架空の練習値です。見出しをデータ行として追加しないでください。
- 3
「新しいリストの作成」を置き、生成された変数を RowsList にします。空にするアクションは For each の前に置きます。毎回ループ内で空にすると、それまでに集めた行が残りません。
- 4
For each の「反復処理を行う値」に %DataTable%、現在の項目を受ける変数に CurrentRow を設定します。ここでの CurrentRow は行番号ではなく、氏名と部署を含む1行分のデータです。
- 5
For each の内側へ「項目をリストに追加」を置き、追加する項目に %CurrentRow%、追加先リストに %RowsList% を指定します。%CurrentRow[0]% だと氏名だけになるため、行全体を渡します。生成変数欄がある版では、出力名と追加先を混同せず確認します。
- 6
For each の End の後に If を置き、左辺 %RowsList.Count%、演算子「より大きい」、右辺の数値 0 を指定します。0件かどうかを先に確かめてから位置0を読みます。
- 7
If の成立側に「変数の設定」を追加し、変数 FirstRow、値 %RowsList[0]% にします。その下の「メッセージを表示」の本文を %FirstRow['部署']% にします。行を1件選ぶ→その行の列を選ぶ、という2段階です。この表では %FirstRow[1]% でも部署を参照できます。
- 8
Else 側は「メッセージを表示」で「対象の行がありません」と表示し、End で閉じます。空のリストを直接 %RowsList[0]% で読まないようにします。
- 9
手動テストでは先頭から実行します。正常例は RowsList.Count=2、位置0が佐藤/営業、位置1が鈴木/総務、最後の表示が「営業」になる想定です。変数ペインで、2項目それぞれが行データであることも確認します。
- 10
0件の練習は元のフローを複製し、DataTable 作成直後に「データ テーブルをクリアする」で %DataTable% を指定します。これは練習変数の行だけを消す操作です。先頭から実行すると For each 内は0回、RowsList.Count=0で Else の表示に進む想定です。外部ファイルは変更しません。
- 対象環境
- Power Automate for desktop(Windows)
- 更新日
- 2026年10月15日