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 をテストする数式。 これらの数式には、一般的に、比較演算子 (<>= など)、および IsBlankIsEmpty などのテスト関数が含まれています。
  • 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 関数を使用して、必要なフォーム フィールドが入力されたかどうかをテストすることができます。 FirstNameblank だった場合、この数式は無効になります。 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 に変更されます。

手順

  1. Text input コントロールを追加し、既定でその名前が付いていない場合は、Text1 という名前を付けます。

  2. Text130 と入力します。

  3. Label コントロールを追加し、その Text プロパティを次の数式に設定します:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    ラベルコントロールではもっと注文を!が表示されます。これは、Text1 の値が 20 以上 40 未満であるためです。

  4. Text115 と入力します。

    ラベルコントロールではさらにたくさんの注文を!が表示されます。これは、Text1 の値が 20 未満であるためです。

  5. Text150 と入力します。

    Label コントロールは、入力した値が 40 を超えているため表示されます。