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とかを使った方がよいとも思うけど。
関連記事
コメント