Power AppsPower Platform

【Power Apps】コレクションを複数キーワードで絞り込む(AND検索・OR検索)

今回の記事では、Power Appsで作成したコレクションを複数キーワードで絞り込む(AND検索・OR検索)方法をお伝えします。

スポンサーリンク

実現したいこと

AND検索・OR検索の具体的なイメージは下記の通りです。

完成イメージ(AND検索・OR検索)

前提・準備

データの準備

App > OnStartプロパティ に下記の式を入力します。

ClearCollect(
    colRecipe,
    {
        RecipeTitle: "トマトとキャベツの和風サラダ",
        RecipeDetails: "トマトとキャベツで作る簡単サラダです。さっぱりとした味わいで夏にぴったりです"
    },
    {
        RecipeTitle: "キャベツのクタクタ煮",
        RecipeDetails: "キャベツをじっくり煮込んだ一品です。簡単でごはんがすすみます"
    },
    {
        RecipeTitle: "にんじんの爽やかサラダ",
        RecipeDetails: "にんじんをオリーブオイルで和えたサラダです。すっぱさも病みつきになります"
    }
)
コレクションの用意

開発中は、App > OnStartを実行します を押すとコレクションが作成されます。

OnStartの実行(コレクションの作成)

コントロールの準備

「テキスト入力コントロール」・「空の垂直ギャラリー」・各種「テキストラベル」を配置します。

「空の垂直ギャラリー」の中のテキストラベルにはそれぞれ、「ThisItem.RecipeTitle」「ThisItem.RecipeDetails」を設定しています

コントロールの準備

OR検索

結論

「空の垂直ギャラリー」のItemsプロパティに下記の式を入力してください。

Filter(
    colRecipe,
    !IsEmpty(
        Filter(
            Split(
                Substitute(
                    txtSearch.Text,
                    " ",
                    " "
                ),
                " "
            ),
            Value in RecipeTitle
        )
    )
)

※ ご自身のコレクションを利用する場合は、「colRecipe」(コレクション名)と「RecipeTitle」(検索する列名)を置き換えてご利用ください

解説

ざっくりとした流れは下記の通りです。

  1. 内側の「Split~ 」部分で、入力されたテキストを半角&全角スペースで分割して検索キーワード(複数)を取得
  2. 外側の「Filter~」部分で、検索キーワードのどれかが含まれている行をピックアップする

具体的には、検索キーワードが1つも含まれていない行は取得されず、1つでも含まれている行は取得されるという動きになります。

検索キーワード入力(OR検索)
実行結果(OR検索)

AND検索

結論

「空の垂直ギャラリー」のItemsプロパティに下記の式を入力してください。

Filter(
    colRecipe,
    CountRows(
        Filter(
            Split(
                Substitute(
                    txtSearch.Text,
                    " ",
                    " "
                ),
                " "
            ),
            Value in RecipeTitle
        )
    ) = CountRows(
        Split(
            txtSearch.Text,
            " "
        )
    )
)

※ ご自身のコレクションを利用する場合は、「colRecipe」(コレクション名)と「RecipeTitle」(検索する列名)を置き換えてご利用ください

解説

ざっくりとした流れは下記の通りです。

  1. 内側の「Split~ 」部分で、入力されたテキストを半角&全角スペースで分割して検索キーワード(複数)を取得
  2. 外側の「Filter~」部分で、すべての検索キーワードが含まれている行をピックアップする

具体的には、「入力された検索キーワードの数」と「RecipeTitleに含まれている検索キーワードの数」を比較して、同数の場合のみ取得されるという動きになります。
これによって、すべての検索キーワードが含まれている行のみを取得するという動きを実現できます。

検索キーワード入力(AND検索)
実行結果(AND検索)

まとめ

コレクションを複数キーワード(半角&全角スペース区切り)で絞り込む方法をお伝えしました。

Filter関数とIsEmpty関数/CountRows関数を組み合わせることで、AND検索やOR検索を実現することができます。
式を見てすぐに理解するのは難しいと思いますので、手元で動かしながら確認いただければと思います。

スポンサーリンク
Hiromaru

普段からPower Platform・SharePointの技術を広めています!
デザインに力を入れて、見やすい・分かりやすい記事を投稿していきます

シェアする
タイトルとURLをコピーしました