Power Apps での If および Switch 関数
セット内の条件が true かどうか (If)、または数式の結果がセット内の任意の値に一致するかどうか (Switch)を指定し、次に結果を返す、またはアクションを実行します。
内容
If 関数は、true の結果が見つかるまで、1 つ以上の条件をテストします。 そのような結果が見つかった場合は、対応する値が返されます。 そのような結果が見つからない場合は、既定値が返されます。 いずれの場合も、返される値は、表示する文字列、評価する数式、または別のフォームの結果となります。
Switch 関数は、数式を評価し、結果が指定したシーケンス内の任意の値に一致するかどうかを指定します。 一致が見つかった場合は、対応する値が返されます。 一致が見つからない場合は、既定値が返されます。 いずれの場合も、返される値は、表示する文字列、評価する数式、または別のフォームの結果となります。
If および Switch はよく似ていますが、状況に合わせて最適な関数を使用する必要があります。
- 1 つの条件を評価するには、If を使用します。 この関数の最も一般的な構文は、If( Condition, ThenResult, DefaultResult ) で、一般的な “if … を提供します then … else …” 他のプログラミング ツールで見られるパターン。
- 複数の無関係な条件を評価するには、If を使用します。 Power Apps では (Microsoft Excel とは異なり)、If の数式を入れ子にすることなく、複数の条件を指定できます。
- 複数の可能な一致に対して1 つの条件を評価するには、Switch を使用します。 この場合 If を使用することもできますが、それぞれの一致する可能性がある数式を繰り返す必要があります。
これらの関数は両方とも、2 つ以上のアクション間で分岐するために、動作の数式 で使用できます。 アクションをトリガーする分岐は 1 つだけです。 条件および一致が順番に評価され、条件が true または一致が見つかった場合は停止します。
どの条件も true でなく、マッチングも見つからず、既定の結果も指定されていない場合は、空白が返されます。
構文
If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )
- Condition(s) - 必須。 true をテストする数式。 これらの数式には、一般的に、比較演算子 (<、>、= など)、および IsBlank、IsEmpty などのテスト関数が含まれています。
- ThenResult(s) - 必須。 true と評価される条件に対して返される対応する値。
- DefaultResult - オプション。 true と評価される条件がない場合に返される値。 この引数を指定しない場合は、空白が返されます。
Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )
- Formula - 必須。 一致を評価する数式。 この数式は、1 回だけ評価されます。
- Match(s) - 必須。 Formula の結果と比較する値。 完全一致が見つかった場合、対応する Result が返されます。
- Result(s) - 必須。 完全一致が見つかった場合に返される対応する値。
- DefaultResult - オプション。 完全一致が見つからない場合は、この値が返されます。 この引数を指定しない場合は、空白が返されます。
例
数式の値
次の例では、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 が指定されていません。 | blank |
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" の値が入力されています。
計算式 | 内容 | 結果 |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | 条件は true なので、Navigate 関数が実行されます。 IsBlank 関数を使用して、必要なフォーム フィールドが入力されたかどうかをテストすることができます。 FirstName が blank だった場合、この数式は無効になります。 | True 表示が Screen1 に変更されます。 |
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) | 演算子 ! がない場合、条件は false なので、Navigate 関数は実行されません。 Back 関数が DefaultResult として指定され、実行します。 | True 表示は、前に表示されていたスクリーンに戻ります。 |
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 に移動します。 | True 表示が 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 を超えているため表示されます。