If および Switch 関数
適用対象: キャンバス アプリ Dataverse 数式列 デスクトップ フロー モデル駆動型アプリ Power Pages Power Platform CLI
セット内の条件が 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( 条件, ThenResult [, デフォルトの結果 ] )
If( 条件1, ThenResult1 [, 条件2, ThenResult2, ... [, DefaultResult ] ] )
- 条件 - 必須。 true をテストする数式。 これらの数式には、一般的に、比較演算子 (<、>、= など)、および IsBlank、IsEmpty などのテスト関数が含まれています。
- ThenResults - 必須。 true と評価される条件に対して返される対応する値。
- DefaultResult - オプション。 true と評価される条件がない場合に返される値。 この引数を指定しない場合は、空白が返されます。
スイッチ( 数式, 一致1, 結果1 [, 一致2, 結果2, ... [, デフォルトの結果 ] ] )
- 式 - 必須。 一致を評価する数式。 この数式は、1 回だけ評価されます。
- 一致 - 必須。 Formula の結果と比較する値。 完全一致が見つかった場合、対応する Result が返されます。
- 結果 - 必須。 完全一致が見つかった場合に返される対応する値。
- DefaultResult - オプション。 完全一致が見つからない場合は、この値が返されます。 この引数を指定しない場合は、空白が返されます。
例
数式の値
次の例では、Slider コントロール (Slider1 という名前) に 25 の値が設定されています。
式 | 説明設定 | Result |
---|---|---|
If( スライダー1.値 = 25, "結果1" ) | 条件は true で、対応する結果が返されます。 | "Result1" |
If( スライダー1.値 = 25, "結果1", "結果2" ) | 条件は true で、対応する結果が返されます。 | "Result1" |
(スライダー1.値 > 1000の場合、「結果1」) | 条件は false で、DefaultResult が指定されていません。 | 空白 |
If( Slider1.Value > 1000, "結果1", "結果2" ) | 条件は false で、DefaultResult が指定され、それが返されます。 | "Result2" |
(スライダー1.値 = 25、"結果1"、スライダー1.値 > 0、"結果2") | 1 つ目の条件は true で、対応する結果が返されます。 2 つ目の条件も true ですが、true と評価される条件よりも後に引数リストに表示されるため、評価されません。 | "Result1" |
If( IsBlank( スライダー1.値 )、"結果1"、IsNumeric( スライダー1.値 )、"結果2" ) | スライダーが 空白 ではないため、1 つ目の条件は false です。 スライダーの値は数値であるため、2 つ目の条件は true になり、対応する結果が返されます。 | "Result2" |
If( Slider1.Value > 1000, "結果1", Slider1.Value > 50, "結果2", "結果3") | 1 つ目と 2 つ目の条件の両方とも false であり、DefaultResult が指定されて返されます。 | "Result3" |
スイッチ(Slider1.Value, 25, "Result1") | スライダーの値は、チェックされる 1 つ目の値と一致し、対応する結果が返されます。 | "Result1" |
スイッチ( スライダー1.値、20、"結果1"、25、"結果2"、30、"結果3" ) | スライダーの値は、チェックされる 2 つ目の値と一致し、対応する結果が返されます。 | "Result2" |
スイッチ( スライダー1.値、20、"結果1"、10、"結果2"、0、"結果3"、"デフォルトの結果" ) | スライダーの値は、チェックされるどの値とも一致しません。 DefaultResult が指定されているので、返されます。 | "DefaultResult" |
動作の数式の分岐
次の例では、FirstName という名前のText input コントロールに "John" の値が入力されています。
計算式 | 内容 | 結果 |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | 条件は true なので、Navigate 関数が実行されます。 IsBlank 関数を使用して、必要なフォーム フィールドが入力されたかどうかをテストすることができます。 FirstName が blank だった場合、この数式は無効になります。 | 真実 表示が 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, "もっとたくさん注文してください!", Value(Text1.Text) < 40, "もっと注文してください!", Text1.Text )ラベルコントロールではもっと注文を!が表示されます。これは、Text1 の値が 20 以上 40 未満であるためです。
Text1 に 15 と入力します。
ラベルコントロールではさらにたくさんの注文を!が表示されます。これは、Text1 の値が 20 未満であるためです。
Text1 に 50 と入力します。
Label コントロールは、入力した値が 40 を超えているため表示されます。