Power Automate Excelの「表内に存在する行を一覧表示」を徹底調査|委任、フィルタークエリ、最大行数

Excelのテーブルからデータ(行)を複数取得するアクション「表内に存在する行を一覧表示」の細かな挙動が気になったので、色々調べてみた。

スポンサーリンク

アクション「表内に存在する行を一覧表示」

Excel Onlineのアクション「表内に存在する行を一覧表示」は、Excel内のテーブルのデータ(行)を複数取得するアクション。

今回はこの「表内に存在する行を一覧表示」アクションの細かな挙動を調べてみた。

事前準備

今回はSPO上のExcelに、
データが「500件」「10,000件」「100,000件」あるテーブルを定義し、このテーブルを対象に色々操作していく。

フィルタークエリ

まずはこのアクションのフィルタークエリについて。

利用可能な演算子

「表内の行を一覧表示」アクションで利用可能なフィルタークエリの演算子は以下の通り。

  • eq : 等しい
  • ne : 等しくない
  • startswith : ~で始まる
  • endswith : ~で終わる
  • contains : ~を含む
列に対する「eq」などのフィルタークエリは問題なく使えるけど、

以上(ge)、以下(le)などの比較系はエラーになる。
※andとかorとかも使えない。

contains(含む)が使えるのはありがたいけど、「日付」のフィルターは結構不便。

日付でのフィルター

日付の列に対しフィルターを行う場合は、DateTime形式を「Serial Number」または「ISO 8601」を選択する必要がある。
フィルターはシリアル値でも、

ISO形式でも可能。

Excelの日付データの「シリアル値」とは、日付や時刻を数値として管理するExcelの仕組み。基準日は1900年1月1日で、この日がシリアル値「1」となり、1日経過するごとにシリアル値は1ずつ増加していく。
ただし、前述の通り比較系の演算子が使えないのがかなり不便。startswithとかで月レベルのフィルターができないかと思ったけど、残念ながら動作しない。

そのため日付で比較系の(2025-02-01以降 みたいな)フィルターをかけたい場合は、一度すべてのデータを取得し、「アレイのフィルター処理」でフィルターする必要がある。

ただ、後ほど書くけどExcelから取得できる行数は既定では256行までなので、Power Appsの委任とデータ行の制限同様、この上限を考慮しないと思わぬ挙動になる。
※サンプルでは2026-01-01以降のデータも存在するけど、1件も取得できていない

取得可能な行数

続いてこのアクションで取得可能なデータ数(行数)について。

デフォルトは256行

何も設定しない場合、このアクションで取得可能な最大データ数は256件。
もしこの上限を増やしたい場合、[設定]から、
[改ページ]をオンにし、[しきい値]を設定することで、
256件以上のデータを取得することが可能。

最大は100,000となっているが。。

一応[しきい値]の上限は10万件となっているらしいけど、
10万件のデータを取得しようとしても、
僕の環境が悪いのか、一度も成功せず。。。
※最低限の文字列だけだしデータ上限の25MBはたぶん超えてないと思う
ちなみに5000件でやると、
45秒くらい。ちなみに5000件でも失敗することはある。

フィルターはExcel側で行ってくれる(委任は可能)

Power Appsの委任のように、フィルター処理自体はExcel側でやってくれるらしく、[しきい値]をオフにした状態(上限256件)でフィルターしても、
256行目以降のデータもきちんと取得してくれる。

取得する行はExcel側の設定が影響する

意外と知られていないけど、Excel側のテーブルを操作すると、このアクションの結果が変わる場合がある。

例えばExcel側のテーブルに何もせずにアクションを実行すると、
通常通りデータが取得できるが、
Excel側で並び替えを行って、再度アクションを実行すると、
取得結果もソートされる。
ただ、Excel側のフィルターは適用されないらしく、450以下にフィルターしてアクションを実行しても、
結果は変わらず。

ということで細かく色々挙動を見てきたけど、Excel上の大規模なデータを安定して扱う場合は、Officeスクリプトとかを使った方がよさそう。
※そもそもSPOとかDataverseとかを使った方がよいとも思うけど。

関連記事

コメント

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