はじめに
Power Appsでアプリを作成していると、「選択肢を状況に応じて変化させたい」というニーズに出会うことがあると思います。
例えば、「都道府県」を選択したら、その都道府県に属する「市区町村」だけが別のコンボボックスに表示されるようなイメージです。
本記事では、Power Apps初心者である筆者の備忘録も兼ねて、簡単に実装する方法を解説します!
この記事はTDCソフト株式会社Advent Calendarの18日目です![]()
事前情報
- コンボボックスで使用する選択肢はExcelのテーブルデータを使用
- SharePointリストに紐づくフォームコントロールは作成済み
下記で解説しているExcleとShrePointリストのデータを使用しています。
詳細については、TDCソフト株式会社Advent Calendar 17日目の記事をご参照ください!
完成イメージ
カテゴリーで「果物」「野菜」「穀類」のいずれかを選択すると、そのカテゴリーに紐づく商品名の選択肢だけが表示されるようになります
今回使用したテーブルデータ
商品管理テーブル
| ID | 商品名 | カテゴリ | 在庫数 | 価格(円) | 入荷日 |
|---|---|---|---|---|---|
| 1 | リンゴ | 果物 | 120 | 150 | 2025/6/10 |
| 2 | バナナ | 果物 | 80 | 90 | 2025/6/12 |
| 3 | みかん | 果物 | 150 | 130 | 2025/6/11 |
| 4 | キウイ | 果物 | 60 | 180 | 2025/6/13 |
| 5 | トマト | 野菜 | 200 | 120 | 2025/6/9 |
| 6 | きゅうり | 野菜 | 100 | 80 | 2025/6/9 |
| 7 | レタス | 野菜 | 100 | 190 | 2025/6/10 |
| 8 | キャベツ | 野菜 | 150 | 150 | 2025/6/10 |
| 9 | 米 | 穀類 | 50 | 1000 | 2025/6/12 |
| 10 | パン | 穀類 | 120 | 100 | 2025/6/13 |
実装の解説
①カテゴリーの設定
1|Itemsプロパティの設定
Distinct関数を使って、商品管理テーブルのカテゴリ列の値を選択肢とします
Distinct(商品管理テーブル, カテゴリ)
Distinct関数:Distinct(テーブル, 列名)
指定したテーブルやコレクションから重複を除いた一意な値の一覧を取得
2|OnChangeプロパティの設定
以下の手順でカテゴリーを選択したときの挙動を設定します
- コンボボックスで選択されたカテゴリーと一致するレコードのみを抽出
- Filter関数
- 抽出したレコードから商品名の一覧を取得(ここでの重複は除く)
- Distinct関数
- 取得していきた一覧を「商品名取得用テーブル」として格納
- Collect関数
ポイント![]()
OnChangeプロパティが呼び出される度に「商品名取得用テーブル」の値が追加されていくため、Collect関数の使用前にClear関数でリセットしておく!
Clear(商品名取得用テーブル);
Collect(
商品名取得用テーブル,
Distinct(
Filter(
商品管理テーブル,
カテゴリ = DataCardValue2.Selected.Value
),
商品名
)
)
Clear関数:Clear(コレクション名)
指定したテーブルやコレクションの中身をすべて削除Collect関数:Collect(コレクション名, レコード)
指定したテーブルやコレクションに新しいレコードを追加Filter関数:Filter(テーブル, 条件)
指定したテーブルやコレクションから条件に合うレコードだけを抽出
②商品名の設定
1|Itemsプロパティの設定
①カテゴリーのOnChangeプロパティで設定した「商品名取得用テーブル」を商品名の選択肢とします
商品名取得用テーブル
2|OnChangeプロパティの設定
商品名を選択したとき挙動に関して、今回は特に設定の必要がないのでデフォルトのままで問題ありません
false
さいごに
コンボボックスの選択肢を動的に変化させる方法を紹介しました。
今回は簡易的なものでしたが、ここから派生させてコンボボックスが3つ、4つと動的にしたい項目を増やすことも可能です!
この記事がみなさんの何らかの解決の糸口となれば嬉しいです。
Power Appsでのファイル容量制限について解説している記事もぜひご覧ください![]()