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


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


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


フィルタークエリ
まずはこのアクションのフィルタークエリについて。
利用可能な演算子
「表内の行を一覧表示」アクションで利用可能なフィルタークエリの演算子は以下の通り。
- eq : 等しい
- ne : 等しくない
- startswith : ~で始まる
- endswith : ~で終わる
- contains : ~を含む
列に対する「eq」などのフィルタークエリは問題なく使えるけど、




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


※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件も取得できていない


※サンプルでは2026-01-01以降のデータも存在するけど、1件も取得できていない


取得可能な行数
続いてこのアクションで取得可能なデータ数(行数)について。
デフォルトは256行
何も設定しない場合、このアクションで取得可能な最大データ数は256件。


もしこの上限を増やしたい場合、[設定]から、


[改ページ]をオンにし、[しきい値]を設定することで、


256件以上のデータを取得することが可能。


最大は100,000となっているが。。
一応[しきい値]の上限は10万件となっているらしいけど、


10万件のデータを取得しようとしても、


僕の環境が悪いのか、一度も成功せず。。。
※最低限の文字列だけだしデータ上限の25MBはたぶん超えてないと思う

※最低限の文字列だけだしデータ上限の25MBはたぶん超えてないと思う

ちなみに5000件でやると、


45秒くらい。ちなみに5000件でも失敗することはある。


データの取得を高速に実施したい場合は、Officeスクリプトを使うのがおすすめ。


Power Automate Excel内の大量のデータを高速に扱うときはOfficeスクリプトの利用を推奨
Excelにある大量のデータを高速に取得したいと言われたので、Officeスクリプトで実現してみた。「表内に存在する行を一覧表示」ではパフォーマンスと安定性に懸念Excel内のデータを一覧で取得するには、Excelコネクタの「表内に存在する...
フィルターはExcel側で行ってくれる(委任は可能)
Power Appsの委任のように、フィルター処理自体はExcel側でやってくれるらしく、[しきい値]をオフにした状態(上限256件)でフィルターしても、


256行目以降のデータもきちんと取得してくれる。


取得する行はExcel側の設定が影響する
意外と知られていないけど、Excel側のテーブルを操作すると、このアクションの結果が変わる場合がある。
例えばExcel側のテーブルに何もせずにアクションを実行すると、


通常通りデータが取得できるが、


Excel側で並び替えを行って、再度アクションを実行すると、


取得結果もソートされる。


ただ、Excel側のフィルターは適用されないらしく、450以下にフィルターしてアクションを実行しても、


結果は変わらず。


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