← 手順一覧へ戻る
クラウドフローExcel初心者向けよく使う

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使うトリガーとアクション

  1. トリガー手動でフローをトリガーする
  2. アクション表内に存在する行を一覧表示ListTasks:Tasksテーブルを取得
  3. アクション配列のフィルター処理FilterTasks:状態が未完了の行を残す
  4. アクション作成取得件数・抽出件数・抽出配列を確認。メール送信なし

表で見る入力と処理結果

架空データ

入力表5行を読み、未完了だけを残すと次の3行になります。元のExcelの5行は変更しません。

クラウド:Excelテーブル
OneDrive for Business または SharePoint 上の .xlsx。対象は名前付きExcelテーブルです。 入力はTasksのA1:B6。1行目はID・状態、データは2〜6行目です。

以下は手順に沿った期待値です。実際のPower Automate・Excel環境で実行して確認した結果ではありません。セルや行の着目箇所には「●」を付けています。

元の表と判定する行

5行の入力と「未完了」で抽出した場合の期待値
ID状態抽出結果
T001完了残さない
T002未完了残す
T003未完了残す
T004完了残さない
T005未完了残す
↓ 処理する行・列/設定

ListTasks の body('ListTasks')?['value'] → FilterTasks:item()?['状態'] が「未完了」に等しい行だけ残す

抽出後の配列

body('FilterTasks') の期待値を表で表示。元のExcelに書き戻す表ではありません
ID状態
● T002未完了
● T003未完了
● T005未完了

件数の確認

各練習を別々に実行した場合の期待値。300行練習は全行が未完了
練習条件取得件数抽出件数
5行/条件:未完了5● 3
5行/条件:保留5● 0
300行/ページネーション:オフ● 256256
300行/オン・しきい値300● 300300
結果の見方

未完了ならT002・T003・T005の3件、保留なら0件([])です。取得件数と抽出件数を分けて確認します。

  • 入力は既存の5行表を参照します。その「抽出結果」列は説明用で、ExcelのTasksに作る列はIDと状態だけです。
  • Filter arrayが調べるのは取得済みの配列です。取得できなかった行を取り戻す処理ではありません。
  • 300行練習ではTop Count・Skip Count・フィルタークエリを空欄にします。ページネーションの設定先はListTasksです。

図で見る処理のイメージ

概念図

練習用Tasksテーブルの5行を読み取り、状態で絞り込む例です。

  1. 入力5行

    T001とT004は完了。T002・T003・T005は未完了

  2. 一覧表示

    value配列として5行取得。取得件数を確認

  3. Filter array

    未完了に一致する3行を残す

  4. 作成で確認

    未完了なら3件、保留なら0件。元の行は削除しない

結果の例

取得件数と抽出件数を別々に確認します。300行練習ではページネーションのオフ256件/オン300件を比較します。

表と図は架空データの期待値です。実際のクラウドフローを実行した結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する8ステップの設定と確認方法
  1. 1

    準備:架空データだけの練習用ブックを作り、A1:B6に見出し「ID」「状態」と、T001=完了、T002=未完了、T003=未完了、T004=完了、T005=未完了を入力します。範囲をExcelの「テーブル」として設定し、テーブル名をTasksにします。普通のセル範囲のままでは選べません。OneDrive for BusinessまたはSharePointへ保存します。

  2. 2

    インスタントクラウドフローを手動トリガーで作り、Excel Online (Business)「表内に存在する行を一覧表示」を追加してListTasksに名前を変更します。場所・ライブラリ・ファイル・Tasksを選びます。この練習ではフィルタークエリ、Top Count(上から順に取得)、Skip Countを空欄にし、ページネーションはオフにします。Excel画面側のフィルターだけでは抽出できません。

  3. 3

    データ操作「配列のフィルター処理」を追加してFilterTasksに変更します。元(From)=式 body('ListTasks')?['value']、左辺=式 item()?['状態']、演算子=次の値に等しい、右辺=固定文字「未完了」。valueは行の配列、item()は調べている1行です。式は式欄に入力し、右辺に余分な空白を入れません。

  4. 4

    FilterTasksの後に「作成」を3個置きます。入力を順に length(body('ListTasks')?['value'])、length(body('FilterTasks'))、body('FilterTasks') とします。Apply to eachは不要です。実行履歴で取得件数5、抽出件数3、IDがT002・T003・T005の配列を確認します。出力にはコネクタが付ける情報も含まれる場合があります。

  5. 5

    0件の練習:FilterTasksの右辺だけを、練習データにはない「保留」に変えて再実行します。取得件数は5、抽出件数は0、抽出配列は [] が期待値です。フローの失敗ではありません。確認後、右辺を「未完了」に戻します。状態が空欄の行や「未完了 」のように末尾に空白がある行は、この完全一致の例には含めません。

  6. 6

    取得漏れの練習:別の練習用ブックで、テーブル内にID T001〜T300の300行を用意し、全行の状態を未完了にします。空行をテーブル外へ並べるのではなく、300行すべてがTasksの範囲内にあることを確認します。対象ファイルをこのブックに切り替え、まずページネーションをオフのまま実行すると、既定では取得256・抽出256が確認ポイントです。

  7. 7

    次にListTasksの設定でページネーション(改ページ)をオン、しきい値を300にして保存・再実行します。上限を制限するTop Countは空欄のまま。練習データが300行なら取得300・抽出300になることと、出力のIDにT300があることを確認します。しきい値は無制限取得の指定ではありません。実データが増えたら想定件数と突き合わせてください。

  8. 8

    300行にならないときは、Excelのテーブル範囲、選択したブックとテーブル、Top Count・フィルタークエリの残り、ページネーションを設定したアクションがListTasksかを確認します。取得済みの256行だけをFilter arrayで調べても、残り44行を取り戻すことはできません。確認が済むまでは送信や更新を後ろにつなげません。

Microsoft公式ページで確認する

設定を確認できる公式資料