Excelの未完了行を抽出する|Filter arrayと256行の取得漏れを確認
Excelテーブル5行から未完了3行だけを取り出す練習です。入力と結果の表、0件の確認、300行での取得件数チェックを通じて、抽出条件とページネーションを理解します。
画面上の名前は、表示言語やバージョンによって異なる場合があります。クラウドフローはトリガー(フローを開始する条件)から始まり、その後にアクションを実行します。値の受け渡しには、前のステップの出力を選ぶ「動的コンテンツ」を使います。式は[式]欄へ入力します。
実行前に確認
- Excel Online (Business)への接続、対象ファイルへの書き込み権限が必要です。読むアクションでもコネクタは書き込み権限を要求します。標準コネクタですが、Power AutomateとMicrosoft 365の利用権、組織のDLPポリシーも確認してください。
- このフローはセルの値を変更するアクションを含みません。ただしコネクタ内部の保存処理により、読み取り時もファイルの更新履歴が増える場合があります。まず練習用ブックを使います。
- Filter arrayは取得後の絞り込みです。一覧表示のフィルタークエリとは設定場所が違います。この例の日本語列「状態」をそのままODataのFilter Queryに移植しないでください。公式仕様ではODataパラメーターの列名は英数字に制限されます。
- 結果が0件なら、まずListTasksのvalueに行があるかを確認し、その後に状態の表記・空白と列名を確認します。valueの代わりに本文全体を渡すと、配列が必要というエラーになります。実行履歴にデータが残るため機密データで練習しません。
- 大量データではコネクタやフローの上限・実行時間も確認します。ページネーションをオンにしただけで件数の完全性を保証することはできません。
1使うトリガーとアクション
- トリガー手動でフローをトリガーする
- アクション表内に存在する行を一覧表示ListTasks:Tasksテーブルを取得
- アクション配列のフィルター処理FilterTasks:状態が未完了の行を残す
- アクション作成取得件数・抽出件数・抽出配列を確認。メール送信なし
表で見る入力と処理結果
架空データ入力表5行を読み、未完了だけを残すと次の3行になります。元のExcelの5行は変更しません。
クラウド:Excelテーブル
OneDrive for Business または SharePoint 上の .xlsx。対象は名前付きExcelテーブルです。 入力はTasksのA1:B6。1行目はID・状態、データは2〜6行目です。
以下は手順に沿った期待値です。実際のPower Automate・Excel環境で実行して確認した結果ではありません。セルや行の着目箇所には「●」を付けています。
元の表と判定する行
| ID | 状態 | 抽出結果 |
|---|---|---|
| T001 | 完了 | 残さない |
| T002 | 未完了 | 残す |
| T003 | 未完了 | 残す |
| T004 | 完了 | 残さない |
| T005 | 未完了 | 残す |
ListTasks の body('ListTasks')?['value'] → FilterTasks:item()?['状態'] が「未完了」に等しい行だけ残す
抽出後の配列
| ID | 状態 |
|---|---|
| ● T002 | 未完了 |
| ● T003 | 未完了 |
| ● T005 | 未完了 |
件数の確認
| 練習条件 | 取得件数 | 抽出件数 |
|---|---|---|
| 5行/条件:未完了 | 5 | ● 3 |
| 5行/条件:保留 | 5 | ● 0 |
| 300行/ページネーション:オフ | ● 256 | 256 |
| 300行/オン・しきい値300 | ● 300 | 300 |
未完了ならT002・T003・T005の3件、保留なら0件([])です。取得件数と抽出件数を分けて確認します。
- 入力は既存の5行表を参照します。その「抽出結果」列は説明用で、ExcelのTasksに作る列はIDと状態だけです。
- Filter arrayが調べるのは取得済みの配列です。取得できなかった行を取り戻す処理ではありません。
- 300行練習ではTop Count・Skip Count・フィルタークエリを空欄にします。ページネーションの設定先はListTasksです。
図で見る処理のイメージ
概念図練習用Tasksテーブルの5行を読み取り、状態で絞り込む例です。
入力5行
T001とT004は完了。T002・T003・T005は未完了
一覧表示
value配列として5行取得。取得件数を確認
Filter array
未完了に一致する3行を残す
作成で確認
未完了なら3件、保留なら0件。元の行は削除しない
取得件数と抽出件数を別々に確認します。300行練習ではページネーションのオフ256件/オン300件を比較します。
表と図は架空データの期待値です。実際のクラウドフローを実行した結果ではありません。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する8ステップの設定と確認方法
- 1
準備:架空データだけの練習用ブックを作り、A1:B6に見出し「ID」「状態」と、T001=完了、T002=未完了、T003=未完了、T004=完了、T005=未完了を入力します。範囲をExcelの「テーブル」として設定し、テーブル名をTasksにします。普通のセル範囲のままでは選べません。OneDrive for BusinessまたはSharePointへ保存します。
- 2
インスタントクラウドフローを手動トリガーで作り、Excel Online (Business)「表内に存在する行を一覧表示」を追加してListTasksに名前を変更します。場所・ライブラリ・ファイル・Tasksを選びます。この練習ではフィルタークエリ、Top Count(上から順に取得)、Skip Countを空欄にし、ページネーションはオフにします。Excel画面側のフィルターだけでは抽出できません。
- 3
データ操作「配列のフィルター処理」を追加してFilterTasksに変更します。元(From)=式 body('ListTasks')?['value']、左辺=式 item()?['状態']、演算子=次の値に等しい、右辺=固定文字「未完了」。valueは行の配列、item()は調べている1行です。式は式欄に入力し、右辺に余分な空白を入れません。
- 4
FilterTasksの後に「作成」を3個置きます。入力を順に length(body('ListTasks')?['value'])、length(body('FilterTasks'))、body('FilterTasks') とします。Apply to eachは不要です。実行履歴で取得件数5、抽出件数3、IDがT002・T003・T005の配列を確認します。出力にはコネクタが付ける情報も含まれる場合があります。
- 5
0件の練習:FilterTasksの右辺だけを、練習データにはない「保留」に変えて再実行します。取得件数は5、抽出件数は0、抽出配列は [] が期待値です。フローの失敗ではありません。確認後、右辺を「未完了」に戻します。状態が空欄の行や「未完了 」のように末尾に空白がある行は、この完全一致の例には含めません。
- 6
取得漏れの練習:別の練習用ブックで、テーブル内にID T001〜T300の300行を用意し、全行の状態を未完了にします。空行をテーブル外へ並べるのではなく、300行すべてがTasksの範囲内にあることを確認します。対象ファイルをこのブックに切り替え、まずページネーションをオフのまま実行すると、既定では取得256・抽出256が確認ポイントです。
- 7
次にListTasksの設定でページネーション(改ページ)をオン、しきい値を300にして保存・再実行します。上限を制限するTop Countは空欄のまま。練習データが300行なら取得300・抽出300になることと、出力のIDにT300があることを確認します。しきい値は無制限取得の指定ではありません。実データが増えたら想定件数と突き合わせてください。
- 8
300行にならないときは、Excelのテーブル範囲、選択したブックとテーブル、Top Count・フィルタークエリの残り、ページネーションを設定したアクションがListTasksかを確認します。取得済みの256行だけをFilter arrayで調べても、残り44行を取り戻すことはできません。確認が済むまでは送信や更新を後ろにつなげません。
- 対象環境
- Power Automate クラウドフロー
- 更新日
- 2026年10月11日