データテーブルから条件に合う行だけ抽出する|完全一致と部分一致
PADのFilter data tableで、文字列の状態コード1だけを取り出します。1・10・11の違いを入力表と出力表で比べ、0件とエラーも区別します。ファイル保存なしで練習できます。
画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。
実行前に確認
- この例は表をメモリ上で絞り込み、結果を変数ビューとメッセージで見る練習です。元のCSVファイルやExcelのセルを更新する手順はありません。出力変数FilteredDataTableと入力SourceTableを取り違えないでください。
- 文字列1と数値1は同じ型ではありません。CSVの文字列取得オプションをオンにしてから比較します。同じ列に型が混在すると公式仕様上エラーになる場合があります。
- 空表・正常な0件・列名不正や型エラーは別です。0件の表で[0]を参照しないでください。本番データを使う場合は、固定の先頭行から条件を得る練習用の設定をそのまま流用しません。
- 複数条件へ広げる場合、公式仕様ではANDがORより先に評価されます。この練習は1条件に限定します。クラウドフローのFilter arrayやExcel画面のオートフィルターとも別です。
- 公式仕様に基づく設定例です。実際のPower Automate for desktopでは実行検証していません。クラウド起動・無人実行には接続やライセンスを別途確認してください。
1使うアクション
- アクション 1変数の設定CsvTextに下の5行を入力
- アクション 2CSV テキスト変数から読み取る列名あり・全フィールドをテキストとして取得 → SourceTable
- アクション 3変数の設定TargetStatus=%SourceTable[0]['Status']%(文字列1)
- アクション 4フィルター データ テーブル(Filter data table)Status Equal to TargetStatus → FilteredDataTable
- アクション 5If / ElseRowsCountが0なら対象なし/1件以上なら件数表示
図で見る処理のイメージ
概念図状態コードはすべて文字列。まず「1だけ」なのか「1を含む」なのかを決めます。
入力4行
A=1、B=10、C=11、D=0
条件を選ぶ
Statusが文字列1と等しい
出力1行
FilteredDataTableはA=1
0件も確認
空の表なら対象なし。列名エラーは別
Equal toはAの1行、ContainsはA・B・Cの3行が期待値です。
| ID | 入力Status | Equal to 1 | Contains 1 |
|---|---|---|---|
| A | 1 | 残す | 残す |
| B | 10 | 除外 | 残す |
| C | 11 | 除外 | 残す |
| D | 0 | 除外 | 除外 |
図表は期待結果です。実際のフローを実行して確認した結果ではありません。PAD実機未実行です。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する11ステップの設定と確認方法
- 1
準備:WindowsのPower Automate for desktopで手動デスクトップフローを作ります。標準の %変数名% 記法を使い、Power Fx有効フローは対象外です。架空データだけを使います。Excel、CSVファイル、クラウド接続は不要です。組織の利用ルールと利用権を確認してください。
- 2
「変数の設定」で変数CsvTextを作り、値に次の5行を改行ごと入力します。先頭行は列名です。ID,Status A,1 B,10 C,11 D,0
- 3
[変数]の「CSV テキスト変数から読み取る」(Read from CSV text variable)を追加します。CSV テキスト=%CsvText%、最初の行に列名を含める=オン、CSV フィールドをテキストとして取得する=オン、フィールドをトリミングする=オン、列区切り文字=事前定義、区切り文字=カンマ。生成変数CSVTableをSourceTableに変更します。「CSV ファイルから読み取る」とは別のアクションです。
- 4
ここで一度止め、変数ビューでSourceTableの列がID・Status、データが4行か確認します。Statusの1・10・11・0はいずれも文字列として扱います。見出しが1行目のデータになっていたら列名オプションを見直します。
- 5
「変数の設定」でTargetStatusの値を%SourceTable[0]['Status']%にします。これは準備した先頭データ行Aの文字列1です。手入力した数値1との型の取り違えを避けます。この準備は4行の表で行い、空の表に対して先頭行を参照しないでください。
- 6
「フィルター データ テーブル」(Filter data table)を追加します。データ テーブル=%SourceTable%。適用するフィルターの編集で列名Status、演算子Equal to(等しい)、値%TargetStatus%を1条件だけ設定します。大文字と小文字の区別はオン。出力変数FilteredDataTableを後続で使います。UIの日本語表記が異なる場合は英語名と公式資料で照合します。
- 7
直後のIfで%FilteredDataTable.RowsCount%が0と等しいか判定します。はい側はメッセージ「対象なし」、Else側は「抽出件数:%FilteredDataTable.RowsCount%」を表示し、Endで閉じます。基本例は1件で、変数ビューのFilteredDataTableにA・1があることを確認します。件数だけでなくIDも照合します。
- 8
部分一致の比較:フィルターの演算子だけをContains(含む)に変更して先頭から実行すると、A・B・Cの3件が期待値です。10と11にも文字1が含まれます。目的が状態コード1だけならEqual toへ戻します。一致しないときにContainsへ置き換えて済ませず、入力型・空白・列名を確認します。
- 9
一致なしの比較:練習用コピーでフィルターを1条件「列名ID、Equal to、値Z」に変更します。ID列は文字列で、Zの行はないため0件・「対象なし」が期待値です。これは入力4行でも条件に一致しない例です。確認後はStatusと%TargetStatus%へ戻します。
- 10
0件の比較:4行の表でTargetStatusを作った直後、フィルターより前に「データ テーブルをクリアする」を一時的に置き、対象を%SourceTable%にします。列名を保った空表になり、フィルターの期待結果は0件で「対象なし」です。先頭行の参照より前には置きません。確認後はこの追加アクションを外します。
- 11
エラーの比較:練習用コピーでフィルターの列名を存在しないStatusTypoにすると、設定時または実行時に列の指定を修正する必要があります。エラーを無視して0件扱いにせず、成功した場合だけIfへ進める既定の実行を保ちます。再実行するときは先頭から表を作り直します。
- 対象環境
- Power Automate for desktop(標準の %変数名% 記法)
- 更新日
- 2026年10月17日