はじめに
Power Apps では、以下の記事で紹介したように、データをフィルターすることができます。
上記記事では触れていませんが、SharePoint リストの選択肢列で複数選択を許可している場合、フィルターの式が複雑になるため、今回別枠で記事を書きたいと思います。
アプローチ
まず、選択肢列で複数選択を許可している場合のデータ構造に注目する必要があります。以下のように、テーブルの中にテーブルがあるイメージです。
まず、コンボボックスを用意します。こちらはフォームコントロールを基に作成しました。
そして、以下のようにギャラリーをフィルターします。
Filter(
複数選択テスト,
!IsEmpty(
Filter(
カテゴリー,
Value in ComboBox1.SelectedItems.Value
)
)
)
結果は以下のような感じになります。ComboBox1 で選択されたカテゴリーのいずれかの値を含む行だけを表示できています。
式についてもう少し解説します。
まず、外側のフィルターで、「複数選択テスト」という SharePoint リスト (テーブル) をフィルターします。各行を一つずつチェックします。
そして、内側のフィルターでカテゴリー列 (テーブル) をフィルターします。内側のフィルターでは、ComboBox1 で選択されたカテゴリーのいずれかの値を含むようにしたいため、このような場合は、以下のように in 演算子を使います。カテゴリー列の中に、ユーザーがコンボボックスで選択したいずれかの値が含まれているデータを取得するという意味になります。
Filter(カテゴリー, Value in ComboBox1.SelectedItems.Value)
最後に、IsEmpty 関数で、内側のフィルターの結果が空でないかを確認しています。! は否定を意味するため、空でない(1つ以上のマッチがある)場合に true となりその行が表示されます。
!IsEmpty(...)
例) ComboBox1 で ["営業", "IT", "開発"] を選択した場合かつリストのデータが以下の場合の結果
まとめ
SharePoint リストの選択肢列で複数選択を許可している場合における Power Apps でのフィルターのアプローチについて説明しました。少し複雑ですが、同様のことにチャレンジする際の参考になれば幸いです。