適用対象: キャンバス アプリ
Copilot Studio
Desktop フロー
Dataverse 数式列
モデル駆動型アプリ
Power Platform CLI
Dataverse 関数
Power Pages
セット内の条件が true (If) であるか、数式の結果がセット内の任意の値と一致するか (Switch)、結果を返すか、アクションを実行するかを決定します。
内容
If関数は、真の結果が見つかるまで 1 つ以上の条件をテストします。 If このような結果が見つかると、対応する値が返されます。 If このような結果が見つからない場合は、既定値が返されます。 いずれの場合も、返される値は、表示する文字列、評価する数式、または別のフォームの結果となります。
Switch関数は、数式を評価し、指定したシーケンス内の任意の値と結果が一致するかどうかを判断します。 If 一致が見つかった場合は、対応する値が返されます。 If 一致するものが見つからない場合は、既定値が返されます。 いずれの場合も、返される値は、表示する文字列、評価する数式、または別のフォームの結果となります。
If と Switch は非常に似ていますが、状況に最適な関数を使用する必要があります。
- Ifを使用して 1 つの条件を評価します。 この関数の最も一般的な構文は If( Condition, ThenResult, DefaultResult ) で、共通の "if ... そうしたら。。。 else …」 構文を使用します。
- Ifを使用して、関連のない複数の条件を評価します。 Power Apps では (Microsoft Excel とは異なり)、数式を入れ子にしなくても複数の条件 If 指定できます。
- Switchを使用して、1 つの条件を複数の一致に対して評価します。 この場合は If を使用することもできますが、可能な一致ごとに数式を繰り返す必要があります。
これらの関数は両方とも、2 つ以上のアクション間で分岐するために、動作の数式 で使用できます。 アクションをトリガーする分岐は 1 つだけです。 条件および一致が順番に評価され、条件が true または一致が見つかった場合は停止します。
どの条件も true でなく、一致するものが見つからず、デフォルトの結果を指定していない場合は、空白が返されます。
構文
If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ...[ , DefaultResult ] ])
- 条件 - 必須。 true をテストする数式。 これらの数式には、一般的に、比較演算子 (<、>、= など)、および IsBlank、IsEmpty などのテスト関数が含まれています。
- ThenResults - 必須。 true と評価される条件に対して返される対応する値。
- DefaultResult - オプション。 true と評価される条件がない場合に返される値。 If この引数を指定しない場合は 、空白 が返されます。
Switch( 数式, Match1, Result1 [, Match2, Result2, ...[, DefaultResult ] ])
- 式 - 必須。 一致を評価する数式。 この数式は、1 回だけ評価されます。
- 一致 - 必須。 Formula の結果と比較する値。 If 完全一致が見つかった場合は、対応する 結果 が返されます。
- 結果 - 必須。 完全一致が見つかった場合に返される対応する値。
- DefaultResult - オプション。 If 完全一致が見つからない場合、この値が返されます。 If この引数を指定しない場合は 、空白 が返されます。
例
数式の値
次の例では、Slider コントロール (Slider1 という名前) に 25 の値が設定されています。
| 式 | 内容 | Result |
|---|---|---|
| If( Slider1.Value = 25, "Result1" ) | 条件は true で、対応する結果が返されます。 | "Result1" |
| If( Slider1.Value = 25, "Result1", "Result2" ) | 条件は true で、対応する結果が返されます。 | "Result1" |
| If( Slider1.Value > 1000, "Result1" ) | 条件は false で、DefaultResult が指定されていません。 | 空白 |
| If( Slider1.Value > 1000, "Result1", "Result2" ) | 条件は false で、DefaultResult が指定され、それが返されます。 | "Result2" |
| If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) | 1 つ目の条件は true で、対応する結果が返されます。 2 つ目の条件も true ですが、true と評価される条件よりも後に引数リストに表示されるため、評価されません。 | "Result1" |
| If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) | スライダーが 空白 ではないため、1 つ目の条件は false です。 スライダーの値は数値であるため、2 つ目の条件は true になり、対応する結果が返されます。 | "Result2" |
| If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") | 1 つ目と 2 つ目の条件の両方とも false であり、DefaultResult が指定されて返されます。 | "Result3" |
| Switch( Slider1.Value, 25, "Result1" ) | スライダーの値は、チェックされる 1 つ目の値と一致し、対応する結果が返されます。 | "Result1" |
| Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) | スライダーの値は、チェックされる 2 つ目の値と一致し、対応する結果が返されます。 | "Result2" |
| Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) | スライダーの値は、チェックされるどの値とも一致しません。 DefaultResult が指定されているので、返されます。 | "DefaultResult" |
動作の数式の分岐
次の例では、FirstName という名前のText input コントロールに "John" の値が入力されています。
| 式 | 内容 | Result |
|---|---|---|
| If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | 条件は true なので、Navigate 関数が実行されます。 IsBlank 関数を使用して、必要なフォーム フィールドが入力されたかどうかをテストすることができます。 If FirstName が 空白の場合、この数式は無効になります。 |
真実 表示が Screen1 に変更されます。 |
| If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) | 演算子 ! がない場合、条件は false なので、Navigate 関数は実行されません。 Back 関数が DefaultResult として指定され、実行します。 |
真実 表示は、前に表示されていたスクリーンに戻ります。 |
| Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) | FirstName.Text の値は "Carlos"、"Kirstin"、および "John" というその順序で比較されます。 "John" との一致が見つかり、アプリは Screen3 に移動します。 |
真実 表示が Screen3 に変更されます。 |
手順
Text input コントロールを追加し、既定でその名前が付いていない場合は、Text1 という名前を付けます。
Text1 に 30 と入力します。
Label コントロールを追加し、その Text プロパティを次の数式に設定します:
If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )ラベルコントロールではもっと注文を!が表示されます。これは、Text1 の値が 20 以上 40 未満であるためです。
Text1 に 15 と入力します。
ラベルコントロールではさらにたくさんの注文を!が表示されます。これは、Text1 の値が 20 未満であるためです。
Text1 に 50 と入力します。
Label コントロールは、入力した値が 40 を超えているため表示されます。