Power Apps のキャンバスアプリで、カテゴリーの選択結果からサブカテゴリーを絞り込む方法を、お話していきたいと思います。
今回の方法では、カテゴリーを複数選択した場合、OR 条件でサブカテゴリーに表示されます!
単一選択の場合でも利用可能です🙆‍♀️(単一選択のケースしか存在しない場合、この記事よりももっと簡単な方法はあります)

フィルター条件として、カテゴリーを選択してから、サブカテゴリーを選択したい場合等にご利用いただける方法です!

1.用意した カテゴリー マスター

今回は、下の画像のような Excel テーブルでカテゴリーのマスターを用意しました。
もちろん、Excelテーブルではなく、Microsoft Dataverse や SharePoint リストでご用意いただいても大丈夫です👍

果物=カテゴリー、品種=サブカテゴリーといったイメージです。

▲テーブル名は『くだものマスター』としてあります。

2.キャンバスアプリの設定

手順1で作成した カテゴリーのマスターは、Power Apps に接続しておいてください!

(1)カテゴリー の選択項目

まずは、画面左側のカテゴリーの配置を行っていきます。

『くだもの(カテゴリー)』と記載されているラベルと、その下にカテゴリー一覧を出すためのリストボックスを配置します。

リストボックスの Items プロパティに、下記のように入力します。
Distinct 関数を利用して、カテゴリーの重複を排除します。

Distinct(くだものマスター,果物).Result

次に、リストボックスの OnChange プロパティに下記のように入力します。
カテゴリーの選択を変えたときに、サブカテゴリーに表示したい品種を、『gblSubCategory』というコレクションに収集するようにしています。

Clear(glbSubCategory); ForAll( ‘lsb Category’.SelectedItems As _category, Collect( glbSubCategory, Filter( くだものマスター, 果物 = _category.Result ) ) )

OnChange プロパティの内容としては、最初に Clear を実行して、 『glbSubCategory』の全レコードを削除します。次に、ForAll 関数によって、カテゴリーのリストボックスで選択されたレコード毎に、『glbSubCategory』に対して Collect を実行します。Collect する内容は、くだものマスターの果物列が、くだものリストで選択した値と一致するレコードを収集します。

簡単にいうと、選択された果物毎に、その果物名の品種がコレクションに追加されます。

(2)サブカテゴリーの選択項目

カテゴリー同様に、『品種(サブカテゴリー)』と入力されたラベルと、サブカテゴリーを表示するためのリストボックスを表示します。

リストボックスの Itmes プロパティには、(1)で作成した『glbSubCategory』を指定します。

3.実際の動作

「いちご」のみを選択した場合、いちごの品種のみが表示されます。

「りんご」と「ぶどう」の選択に変更した場合、りんごとぶどうの品種が表示されます。

このように、カテゴリーを OR 条件として、サブカテゴリーを表示できるようになりました!