【Power Apps】Filterで複数条件を検索

Power Appsで使用できる検索の関数はいくつかあるのですが、複数条件の場合、Search関数かFilter関数になると思います。

Search関数はとても簡単に複数条件の設定ができるのですが、ExcelやSharePointリストで使う場合は委任問題が発生するため、Filter関数を使用して複数条件で検索できるように設定してみようと思います。

委任についてわからない方は下記の記事を参考にしてください。

【Power Apps】委任とは

Filter関数を使用して複数条件で検索

Excelで下記のSamuraiJapanというデータを作成し使用します。Power Appsで使用するため、テーブルにしています。

Power Appsで以下のようなGalleryテキストボックスコンボボックスを作成し、テキストボックスには「選手の名前」、コンボボックスは「右投げ、左投げ」を選択できるようにデータソースに設定します。

GalleryのItemsに下記のように設定します。

Apps
Filter(SamuraiJapan,StartsWith(名前,TextInput1.Text),IsBlank(ComboBox2.Selected)||投=ComboBox2.Selected.Value)

'または
Filter(SamuraiJapan,StartsWith(名前,TextInput1.Text),Or(IsBlank(ComboBox2.Selected),投=ComboBox2.Selected.Value))

テキストボックスの検索部分はStarsWith関数を使用して検索します。StartsWith関数はテキストの検索に使用でき、テキストの前方が一致した場合、trueを返し、一致しない場合はfalseを返します。

今回の場合は、苗字だけ検索してヒットしたら、Galleryに表示されるようStartsWith関数を使用しています。

StartsWith関数を使用しない場合、フルネームが完全一致しないとGalleryの検索結果には表示されません。完全一致なので、苗字と名前の間にあるスペースが半角か全角かまで一致しないといけないため、あまりユーザーさんにやさしくないためStartsWith関数を使用しています。

参考 Power Apps の EndsWith 関数と StartsWith 関数Microsofr Learn

コンボボックスの方は、コンボボックスが未選択でも検索結果が出るようにIsBlank(ComboBox2.Selected)を入れてあります。コンボボックスが選択されているかはComboBox2.Selectedで判定ができ、空欄の場合は未選択と判定しています。

まとめ

比較演算子を使用して、条件に一致するレコードを抽出する

今回は比較演算子の中のイコールのみ使いましたが、一致しない場合は”<>”を使ってレコードを抽出します。

※テキストを比較する場合は、値を””(ダブルクォーテーション)で囲みましょう。

Apps
'一致する場合
Filter(Source, Column="値")

'一致しない場合
Filter(Source, Column<>"値")

複数条件の指定方法

Apps
//かつ(AND):カンマで繋ぐか、&&を使う

Filter(ソース, 条件1, 条件2)

//または(OR):||を使う。

Filter(ソース, 条件1 || 条件2)

例えば、「部署が営業部」かつ「年齢が30以上」のデータを出す場合は、
Filter(従業員リスト, 部署=”営業部”, 年齢>=30)と書きます。

委任に関する注意点

Filter関数は非常に便利ですが、データソース(SharePointなど)によっては、複雑な条件を書くと「委任警告」が出ることがあります。

警告が出た状態だと、データが大量にある場合に「最初の500件〜2000件」までしか検索対象にならないため注意が必要です。まずはシンプルな一致(=)から試してみるのがコツです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA