← 手順一覧へ戻る
Power Automate Desktopデータテーブル初心者向け

データテーブルの各行をリストにまとめる(行と列の参照を図解)

氏名・部署の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. アクション 1新しいデータ テーブルを作成するDataTable:氏名・部署の2列2行
  2. アクション 2新しいリストの作成RowsList を空にする(ループの前)
  3. アクション 3For eachDataTable の各行 → CurrentRow
  4. アクション 4項目をリストに追加CurrentRow 全体 → RowsList
  5. アクション 5EndFor each の終わり
  6. アクション 6IfRowsList.Count が 0 より大きい
  7. アクション 7変数の設定FirstRow = %RowsList[0]%
  8. アクション 8メッセージを表示%FirstRow['部署']% → 営業
  9. アクション 9Else0件のとき
  10. アクション 10メッセージを表示対象の行がありません
  11. アクション 11EndIf の終わり

図で見る処理のイメージ

概念図

表の1行を1項目として集めます。まず2行の形を確認し、行を選んでから部署を参照します。

2列2行の表 → 行データ2件のリスト

入力:DataTable
架空の練習表
氏名部署
佐藤営業
鈴木総務

1行に氏名と部署の2つの値

For eachCurrentRow 全体を追加0件 → 1件 → 2件
出力:RowsList
  1. 位置0佐藤 / 営業
  2. 位置1鈴木 / 総務

Count=2。各項目は1行分の組です。

① 行を選ぶ ② その行の列を選ぶ

%RowsList[0]% → FirstRow:佐藤/営業
%FirstRow['部署']% → 営業

先に件数を確認

1件以上:先頭行の部署を表示
0件:「対象の行がありません」を表示

行データのリストと、部署だけのリストは別の形です。部署だけなら 1列を取得する手順へ。行を直接処理するだけなら、元の表の For each だけでも構いません。
結果の例

RowsList は行データ2件。先頭の行を FirstRow に取り出すと、部署の値は「営業」です。0件なら行を読まず「対象の行がありません」と表示します。

狭い画面では表を横にスクロールして、件数と分岐を比べられます。

入力を変えたときの期待値(毎回、先頭から初期化して実行)
練習条件リストの件数最後の分岐・表示確認すること
基本:佐藤/営業、鈴木/総務2成立側 → 営業氏名と部署の組を保つ
先頭行を鈴木/総務に入れ替える2成立側 → 総務先頭行の値を読む
佐藤/営業を3行目にも追加する3成立側 → 営業重複行も残る
練習変数をクリアして0行にする0Else → 対象の行がありません位置0を参照しない
誤設定:CurrentRow[0] だけを追加2行データの参照を行わない氏名の文字列リストになるため設定を直す

行データの収集と参照の概念図です。実際の実行画面ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する10ステップの設定と確認方法
  1. 1

    準備:WindowsのPower Automate for desktopで、Power Fxをオフにした練習用フローを作ります。以下は従来の %変数名% 記法です。組織の利用許可・サインイン条件を確認してください。ローカルの変数と画面表示だけを使うため、Excel接続・外部サービス・有料コネクタは使いません。クラウドからの起動や無人実行のライセンス条件は別です。

  2. 2

    「新しいデータ テーブルを作成する」のビジュアルエディターで、列見出しを「氏名」「部署」、データ行を「佐藤/営業」「鈴木/総務」にします。生成された変数を DataTable にします。氏名は架空の練習値です。見出しをデータ行として追加しないでください。

  3. 3

    「新しいリストの作成」を置き、生成された変数を RowsList にします。空にするアクションは For each の前に置きます。毎回ループ内で空にすると、それまでに集めた行が残りません。

  4. 4

    For each の「反復処理を行う値」に %DataTable%、現在の項目を受ける変数に CurrentRow を設定します。ここでの CurrentRow は行番号ではなく、氏名と部署を含む1行分のデータです。

  5. 5

    For each の内側へ「項目をリストに追加」を置き、追加する項目に %CurrentRow%、追加先リストに %RowsList% を指定します。%CurrentRow[0]% だと氏名だけになるため、行全体を渡します。生成変数欄がある版では、出力名と追加先を混同せず確認します。

  6. 6

    For each の End の後に If を置き、左辺 %RowsList.Count%、演算子「より大きい」、右辺の数値 0 を指定します。0件かどうかを先に確かめてから位置0を読みます。

  7. 7

    If の成立側に「変数の設定」を追加し、変数 FirstRow、値 %RowsList[0]% にします。その下の「メッセージを表示」の本文を %FirstRow['部署']% にします。行を1件選ぶ→その行の列を選ぶ、という2段階です。この表では %FirstRow[1]% でも部署を参照できます。

  8. 8

    Else 側は「メッセージを表示」で「対象の行がありません」と表示し、End で閉じます。空のリストを直接 %RowsList[0]% で読まないようにします。

  9. 9

    手動テストでは先頭から実行します。正常例は RowsList.Count=2、位置0が佐藤/営業、位置1が鈴木/総務、最後の表示が「営業」になる想定です。変数ペインで、2項目それぞれが行データであることも確認します。

  10. 10

    0件の練習は元のフローを複製し、DataTable 作成直後に「データ テーブルをクリアする」で %DataTable% を指定します。これは練習変数の行だけを消す操作です。先頭から実行すると For each 内は0回、RowsList.Count=0で Else の表示に進む想定です。外部ファイルは変更しません。

Microsoft公式ページで確認する

設定を確認できる公式資料