Power Automate Desktop データテーブル(二次元配列)

2024年7月25日

English version.

表形式のデータを扱うデータテーブル(二次元配列)について紹介します。

Power Automate Desktopのデータテーブルは、テーブル形式でデータを格納するための機能です。データテーブルを使用することで、複数の行と列から構成されるテーブル形式のデータを簡単に扱うことができます。

例えば、Excelファイルやデータベースからのデータを読み込み、Power Automate Desktopのデータテーブルに格納することができます。

データテーブルは、Power Automate Desktopのアクションや条件分岐などの様々な機能と組み合わせて利用されます。例えば、特定の条件を満たす行のみを抽出して、別のアクションに渡すことができます。

目次

作成用ツール

Excelに記述した構造のデータテーブルの数式を作成するツールです。

リンク

データテーブル(二次元配列)について

作成

「新しいデータテーブルを作成する」アクションで作成

「変数」の「データ テーブル」より「新しいデータテーブルを作成する」をワークスペースに設置します。

「編集」をクリックします。

データテーブルの初期値を設定します。

列名をダブルクリックすると編集可能です。

右の「+」をクリックすると列追加、下の「+」をクリックすると行追加です。

セルをダブルクリックすると要素の値を設定します。

{x}をクリックすると変数を指定可能です。

左側の行数を右クリックすると削除や値のクリアが可能です。

列名も同様に右クリックで削除や値のクリアが可能です。

0行(空)のデータテーブルを作成

「新しいデータ テーブル」を作成するアクションではデータ行のないテータテーブルを作成できません。

(作ることが出来ても、データ追加が出来ないので無意味)

あとで追加するための列だけ作成したい場合は、最初に仮の1行目を作り、

「データ テーブルから行を削除する」アクションで仮の1行目を削除します。

仮の1行目を作りデータテーブルを作成
仮の1行目を削除(行インデックスは0)

ファイルから読み込む

次のアクションを利用してExcelやCSVから作成することも可能です。

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

CSVを読み取ります

変数の設定で行う

基本的にアクションで行う方が無難ですが、

作成するテーブルによってはこちらで行う方が簡潔で、手間が少ない場合があります。

昔のフローには作成アクションがなかったため、

この方法での作成が残っているケースもあります。

また列名を変数にしたい場合は、こちらの方法で実施する必要があります。

アクションの「変数」より「変数の設定」をドラッグします。

「変数」に変数名を指定して、「値」にデータテーブルを指定します。

まず数式を意味する%で囲み、データテーブルを意味する{}で囲みます。

そして{}の中に,区切りで行を[]囲みで指定します。

行の中では列を,区切りで指定します。

例えば次のような表は %{[1, 'いぬ'], [2, 'ねこ'], [3, 'ぶた']}% と指定します。

ここの指定は変数でも構いません。

1いぬ
2ねこ
3ぶた
作成されたデータテーブル
列名を指定

列名は^を付けて指定します。

列のみを指定すると空(0行)のデータテーブルになります。

%{ ^['No', 'Name'], [1, 'いぬ'], [2, 'ねこ'], [3, 'ぶた'] }%
作成されたデータテーブル

列名には変数も指定可能です。

作成済みデータテーブルへの操作

値を取得

%データテーブル[行番号][列番号]%と指定します。

データテーブル変数dtから、最初の行の最初の列を取得する場合は%dt[0][0]%とします。

列名がある場合、列名でも指定可能です。

要素の更新

「データテーブル項目を更新する」アクションを利用します。

アクションのパラメータ
データテーブル

対象のデータテーブルを指定します。

列・行

対象の列/行を0から始まる連番で指定します。両方に0を指定すると1行目、1列目が対象になります。

新しい値

更新後の値を指定します。

要素の検索・置換

「変数」、「データ テーブル」より「データ テーブル内で検索または置換する」を設置します。

アクション設置後、パラメータを設定します。

項目指定値
データ テーブル対象のデータテーブルを指定します。
検索モード「検索」か「検索して置換」を選択します。
すべての一致・オン:検索結果全てを対象
・オフ:最初の検索結果のみを対象
検索するテキスト探すテキストを指定します。
正規表現を使用して検索するオンにすると正規表現による検索を行います。
正規表現を利用すると数値のみや、
前方一致のような検索が可能になります。
一致するサポート案件英字の大文字・小文字を区別する場合、オンにします。
正規表現を使用する場合は指定できません。
セルの内容が完全に一致するオンの場合は部分一致、オフの場合は完全一致で検索します。
正規表現を使用する場合は指定できません。
置換するテキスト一致部分を置き換えるテキストを指定します。
検索モードが「検索して置換」の場合のみ指定します。
検索条件・すべての場所:すべての列を検索・置換の対象
・列の場合:検索・置換対象列をインデックスか列名で指定
列のインデックスまたは名前検索条件が列の場合にのみ指定。検索・置換対象を指定します。

検索結果は生成された変数としてデータテーブル形式で取得します。

置換も行う場合は検索対象のデータテーブルの中身が更新されます。

結果となる生成された変数の初期設定はDataTableMatchesです。

一致する結果が存在しない場合は生成された変数が0件になります。

%DataTableMatches.RowsCount%が0なら一致なし、1以上なら一致するものがあります。

%DataTableMatches[#]['Row']%
%DataTableMatches[#]['Column']%

要素の追加

「行をデータ テーブルに挿入する」アクションを利用する

「行をデータ テーブルに挿入する」アクションを設置します。

パラメータを指定します。

項目設定値
データ テーブル追加するデータテーブルを指定
挿入場所末尾か先頭かを指定
新しい値追加行を指定。例:%[4, 'うし']%
変数の設定で行う

+演算子を利用します。

この方法では末尾に追加のみが可能です。(先頭には不可)

こちらの利用は推奨しませんが、「行をデータ テーブルに挿入する」アクションより先に実装された方法のため

過去のフローに残っている可能性があります。

項目設定値
変数データテーブル変数
データテーブル変数 + 追加する要素

行を削除

行を削除するには「データ テーブルから行を削除する」を利用します。

「データテーブル」に行削除対象のデータテーブル、

行インデックスに削除する対象を指定します。

このインデックスは先頭行を0とする連番です。

行インデックスはそのままでは特定できないケースが多いため、

先に行数の検索(DataTableMatches.Row)を行うことが殆どでしょう。

列を削除(旧来の方法)

Excelの起動」アクションを使用して「空のドキュメントを使用」を選択します。

Excel ワークシートに書き込み」でA1セルにデータテーブルの内容を書き込みます。

Excel ワークシートに列を削除」を利用して削除する列を指定します。

この列は先頭(A列)が1から始まる連番です。

Excel ワークシートから読み取る」を設置して、

「ワークシートに含まれる使用可能なすべての値」を選択します。

このアクションの生成された値に列削除後のデータテーブルが設定されます。

列の削除(アクションを利用)

2024年7月のアップデートで追加された「データテーブルから列を削除する」アクションを利用します。

アクションのパラメータ
データテーブル

対象のデータテーブルを指定します。

次で列を指定する

削除対象の列を「列名」と「インデックス」の、どちらで指定するかを選択します。

列名

削除する列の名前を指定します。

「次で列を指定する」に「列名」を選択した場合、このパラメーターを指定します。

存在しない列名を指定するとエラーが発生します。

列のインデックス

「挿入場所」が「列インデックスの前」の場合、削除列の位置を数値で指定します。

0を指定すると先頭に列が削除されます。

「データテーブル」の列数と同じ数値を指定すると末尾の列に削除します。

負数や「データテーブル」の列数を超える数値を指定するとエラーが発生します。

行数を取得

数式で %データテーブル.RowsCount% と指定します。

列名を取得(Columns と ColumnHeadersRow)

数式で %データテーブル.Columns% と指定するとリストの形式で列名を取得します。

数式で %データテーブル.ColumnHeadersRow% と指定するとデータ行の形式で列名を取得します。

ColumnsとColumnHeadersRowは基本的には同じ動きをします。

For Eachでループする場合はどちらも列の数だけループし、

別のデータテーブルにデータ行として追加可能です。

異なるのは「Excel ワークシートに書き込み」に利用する場合です。

Columnsでは縦(列)方向に書き込まれますが、

ColumnHeadersRowでは横(行)方向に書き込まれます。

この用途には基本的にColumnHeadersRowを利用するでしょう。

CSVファイルに書き込みます」ではどちらも横(行)方向です。

列数を取得

数式で %データテーブル.Columns.Count% と指定します。

空かどうかを確認

数式で %データテーブル.IsEmpty% と指定します。

空であればTrue、そうでなければFalseが結果になります。

データテーブル列をリストに取得

アクションの「変数」より「データテーブル列をリストに取得」をドラッグします。

「データ テーブル」にデータテーブル変数を指定し、

「列名またはインデックス」に取得する列を指定します。

(最初の列のインデックスは0です)

「生成された変数」の名前を変えなければ「ColumnAsList」に取得列が格納されます。

ループ(For each)

「For each」を設置して、「反復処理を行う値」にデータテーブル変数を指定します。

「生成された変数」の名前を変えなければ「CurrentItem」に、その時の行が格納されます。

数式で%CurrentItem[列番号]%と指定すると、その行の値を取得します。

列の追加

2024年7月のアップデートで追加された「列をデータテーブルに挿入する」アクションを利用します。

アクションのパラメータ
データテーブル

対象のデータテーブルを指定します。

挿入場所

新規列の挿入場所を選択します。

選択位置
データテーブルの末尾最後尾で固定
列インデックスの前追加パラメータで「列のインデックス」で位置を指定します。
列名

新規列の列名を指定します。

既に存在する列名を指定するとエラーが発生します。

列のインデックス

「挿入場所」に「列インデックスの前」を選択した場合、追加列の位置を数値で指定します。

0を指定すると先頭に列が追加されます。

「データテーブル」の列数と同じ数値を指定すると末尾に追加します。「挿入場所」に「データテーブルの末尾」を選択するのと同じです。

負数や「データテーブル」の列数を超える数値を指定するとエラーが発生します。

全ての列が空の行を削除

2024年7月のアップデートで追加された「データテーブルから空の行を削除する」アクションを利用します。

このアクションは、データテーブル内の空の行を自動的に検出し、削除します。

空の定義
  • 完全に空のセルのみが「空」として認識されます。
  • 半角スペースを含むセルは空とみなされず、そのような行は削除されません。
削除の範囲
  • 空の行が複数存在する場合、それらすべてが削除されます。
  • データテーブル内のすべての行が空の場合、結果として0行のデータテーブルになります。

半角スペースも空とみなしたい場合は、先に「テキストのトリミング」などを利用して消しておきましょう。

重複行の削除

2024年7月のアップデートで追加された「データテーブルから重複業を削除する」アクションを利用します。

このアクションは、データテーブル内の重複行を自動的に検出し、削除します。

全ての列の値が同じ行を重複と判定します。同一行が3行以上あっても1行になります。

すべての行を削除

2024年7月のアップデートで追加された「データテーブルを消去」アクションを利用します。

このアクションは全行を削除し、0行のデータテーブルに変換します。

行のみを削除し、列の定義は残ります。

行の並び替え

2024年7月のアップデートで追加された「データテーブルを並び替える」アクションを利用します。

アクションのパラメータ
データテーブル

対象のデータテーブルを指定します。

次で列を指定する

並び替えの基準とする列を「列名」と「インデックス」の、どちらで指定するかを選択します。

列名

並び替えの基準とする列の名前を指定します。

「次で列を指定する」に「列名」を選択した場合、このパラメーターを指定します。

存在しない列名を指定するとエラーが発生します。

列のインデックス

「次で列を指定する」が「インデックス」の場合、並び替えの基準とする列の位置を数値で指定します。

0を指定すると先頭列になります。

「データテーブル」の列数と同じ数値を指定すると末尾の列です。

負数や「データテーブル」の列数を超える数値を指定するとエラーが発生します。

順序

基準列を昇順か降順のどちらで並び替えるかを選択します。

行のフィルター

2024年7月のアップデートで追加された「フィルター データテーブル」アクションを利用します。

データテーブル

対象のデータテーブルを指定します。

適用するフィルター

「編集」をクリックしてフィルタリングの条件を設定します。

ルール

左下の+をクリックして条件を増やした場合に、その関係が「または(Or)」「かつ(And)」なのかを選択します。「かつ(And)」と「または(Or)」が両方ある場合は、「かつ(And)」が優先されます。

列またはインデックス

条件の対象列を次の何れかで指定します。

・0から始まる連番

・列名

演算子

条件の論理演算子を選択します。

  • と等しい(=)
  • と等しくない(<>)
  • より大きい(>)
  • 以上である(>=)
  • より小さい(<)
  • 以下である(<=)
  • 次を含む
  • 次を含まない
  • 空である
  • 空ではない
  • 先頭
  • 次の値で始まらない
  • 末尾
  • 次の値で終わらない

条件の値を指定します。

フィルター結果

生成された変数(FilteredDataTable)のデータテーブルがフィルター結果です。

次の記事

サブフロー

何度も行うフローを一か所にまとめておくサブフローの使い方を紹介します。

Power Automate Desktopを効率的に習得したい方へ

当サイトの情報を電子書籍用に読み易く整理したコンテンツを

買い切り950円またはKindle Unlimited (読み放題) で提供中です。

Word-A4サイズ:1,700ページの情報量で

(実際のページ数はデバイスで変わります)

基本的な使い方から各アクションの詳細な使い方、

頻出テクニック、実用例を紹介。(目次

体系的に学びたい方は是非ご検討ください。

アップデートなどの更新事項があれば随時反映しています。(更新履歴

なお購入後に最新版をダウンロードするには

Amazonへの問い合わせが必要です。

関連記事

初心者向けの記事一覧

活用例

URLパラメータをデータリストに変換する方法

数値のリストに順位(ランキング)をつける方法

偏差値を取得する方法