PowerApps の If および Switch 関数If and Switch functions in PowerApps

セット内の条件が true かどうか (If)、または数式の結果がセット内のいずれかの値に一致するかどうか (Switch) を判断し、結果を返すかアクションを実行します。Determines whether any condition in a set is true (If) or the result of a formula matches any value in a set (Switch) and then returns a result or executes an action.

説明Description

If 関数は、true の結果が見つかるまで、1 つ以上の条件をテストします。The If function tests one or more conditions until a true result is found. このような結果が見つかった場合は、対応する値が返されます。If such a result is found, a corresponding value is returned. このような結果が見つからない場合、既定値が返されます。If no such result is found, a default value is returned. どちらの場合も、返される値は、表示する文字列、評価する対象の数式、または別の形式の結果になります。In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

Switch 関数は、数式を評価し、結果が指定したシーケンス内の値に一致するかどうかを判断します。The Switch function evaluates a formula and determines whether the result matches any value in a sequence that you specify. 一致が見つかった場合は、対応する値が返されます。If a match is found, a corresponding value is returned. 一致が見つからない場合は、既定値が返されます。If no match is found, a default value is returned. どちらの場合も、返される値は、表示する文字列、評価する対象の数式、または別の形式の結果になります。In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

IfSwitch はよく似ていますが、状況に合わせて適切な関数を使用する必要があります。If and Switch are very similar, but you should use the best function for your situation:

  • 単一の条件を評価する場合は、If を使用します。Use If to evaluate a single condition. この関数の最も一般的な構文は、If( Condition, ThenResult, DefaultResult ) です。これは、他のプログラミング ツールで見られる一般的な "if …The most common syntax for this function is If( Condition, ThenResult, DefaultResult ), which provides the common “if … then …then … else …"else …” パターンを提供します。pattern seen in other programming tools.
  • 関連性のない複数の条件を評価する場合は、If を使用します。Use If to evaluate multiple unrelated conditions. PowerApps では (Microsoft Excel とは異なり)、If の数式を入れ子にすることなく、複数の条件を指定できます。In PowerApps (unlike Microsoft Excel), you can specify multiple conditions without having to nest If formulas.
  • 可能な複数の一致を求めて単一の条件を評価する場合は、Switch を使用します。Use Switch to evaluate a single condition against multiple possible matches. この場合、If も使用できますが、可能なそれぞれの一致について数式を繰り返す必要があります。You can also use If in this case, but you'd need to repeat the formula for each possible match.

これらの関数は両方とも、2 つ以上のアクション間で分岐するために、動作の数式で使用できます。You can use both of these functions in behavior formulas to branch between two or more actions. アクションをトリガーする分岐は 1 つだけです。Only one branch will trigger an action. 条件と一致が順番に評価され、条件が true になるか一致が見つかった時点で停止します。Conditions and matches are evaluated in order, and they stop if a condition is true or a match is found.

どの条件も true にならなかった場合、一致が見つからなかった場合、既定の結果を指定しなかった場合は、"空白" が返されます。Blank is returned if no conditions are true, no matches are found, and you don't specify a default result.

構文Syntax

If( Condition, ThenResult [, DefaultResult ] )If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condition(s) – 必須。Condition(s) - Required. true かどうかをテストする数式。Formula(s) to test for true. このような数式には、通常、比較演算子 (<>= など) と、テスト関数 (IsBlankIsEmpty など) が含まれています。Such formulas commonly contain comparison operators (such as <, >, and =) and test functions such as IsBlank and IsEmpty.
  • ThenResult(s) - 必須。ThenResult(s) - Required. true に評価される条件について返される、対応する値。The corresponding value to return for a condition that evaluates to true.
  • DefaultResult - 省略可能。DefaultResult - Optional. true に評価される条件がない場合に返される値。The value to return if no condition evaluates to true. この引数を指定しない場合は、"空白" が返されます。If you don't specify this argument, blank is returned.

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • Formula - 必須。Formula - Required. 一致について評価する数式。Formula to evaluate for matches. この数式は、1 回だけ評価されます。This formula is evaluated only once.
  • Match(s) - 必須。Match(s) - Required. Formula の結果と比較する値。Values to compare with the result from Formula. 完全一致が見つかった場合、対応する Result が返されます。If an exact match is found, the corresponding Result is returned.
  • Result(s) - 必須。Result(s) - Required. 完全一致が見つかった場合に返される、対応する値。The corresponding value to return when an exact match is found.
  • DefaultResult - 省略可能。DefaultResult - Optional. 完全一致が見つからない場合は、この値が返されます。If an exact match isn't found, this value is returned. この引数を指定しない場合は、"空白" が返されます。If you don't specify this argument, blank is returned.

Examples

数式の値Values in formulas

次の例では、Slider1 という名前のスライダー コントロールに 25 という値が設定されています。In the following examples, a Slider control (named Slider1) has a value of 25.

数式Formula 説明Description 結果Result
If( Slider1.Value = 25, "Result1" )If( Slider1.Value = 25, "Result1" ) 条件は true であり、対応する結果が返されます。The condition is true, and the corresponding result is returned. "Result1""Result1"
If( Slider1.Value = 25, "Result1", "Result2" )If( Slider1.Value = 25, "Result1", "Result2" ) 条件は true であり、対応する結果が返されます。The condition is true, and the corresponding result is returned. "Result1""Result1"
If( Slider1.Value > 1000, "Result1" )If( Slider1.Value > 1000, "Result1" ) 条件は false であり、DefaultResult が指定されていません。The condition is false, and no DefaultResult was provided. "空白"blank
If( Slider1.Value > 1000, "Result1", "Result2" )If( Slider1.Value > 1000, "Result1", "Result2" ) 条件は false であり、DefaultResult が指定されているため、それが返されます。The condition is false, a DefaultResult was provided, and it's returned. "Result2""Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" )If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) 1 つ目の条件が true であり、対応する結果が返されます。The first condition is true, and the corresponding result is returned. 2 番目の条件も true ですが、引数リストで true に評価される条件よりも後にあるため、評価されません。The second condition is also true, but it isn't evaluated because it appears later in the argument list than a condition that evaluates to true. "Result1""Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" )If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) スライダーが "空白" ではないため、1 つ目の条件は false です。The first condition is false because the slider isn't blank. スライダーの値は数値であるため、2 つ目の条件は true になり、対応する結果が返されます。The second condition is true because the slider's value is a number, and the corresponding result is returned. "Result2""Result2"
If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3")If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") 1 つ目と 2 つ目の条件は両方とも false であり、DefaultResult が指定されているため、それが返されます。Both the first and second conditions are false, a DefaultResult was provided, and it's returned. "Result3""Result3"
Switch( Slider1.Value, 25, "Result1" )Switch( Slider1.Value, 25, "Result1" ) スライダーの値は、チェックする 1 つ目の値に一致し、対応する結果が返されます。The slider's value matches the first value to be checked, and the corresponding result is returned. "Result1""Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" )Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) スライダーの値は、チェックする 2 つ目の値に一致し、対応する結果が返されます。The slider's value matches the second value to be checked, and the corresponding result is returned. "Result2""Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" )Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) スライダーの値は、チェックするどの値とも一致しません。The slider's value doesn't match any value to be checked. DefaultResult が指定されているため、それが返されます。A DefaultResult was provided, so it's returned. "DefaultResult""DefaultResult"

動作の数式での分岐Branching in behavior formulas

次の例では、FirstName という名前のテキスト入力コントロールに値 "John" が入力されています。In these examples, a Text input control named FirstName has the value "John" typed into it.

数式Formula 説明Description 結果Result
If( !IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) )If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) 条件は true であり、Navigate 関数が実行されます。The condition is true, so the Navigate function runs. IsBlank 関数を使用して、必要なフォーム フィールドが入力済みかどうかをテストすることができます。You can use the IsBlank function to test whether a required form field has been filled in. FirstName が "空白" だった場合、この数式には効果がありません。If FirstName were blank, this formula would have no effect. truetrue

表示が Screen1 に変更されます。The display is changed to Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() )If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) !Without the ! 演算子がない場合、条件は false であり、Navigate 関数は実行されません。operator, the condition is false, so the Navigate function doesn't run. Back 関数が DefaultResult として指定されているため、それが実行されます。The Back function was provided as a DefaultResult, so it runs. truetrue

表示は、前に表示されていた画面に戻ります。The display goes back to the screen that was previously shown.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) )Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) FirstName.Text の値は "Carlos"、"Kirstin"、"John" と、この順に比較されます。The value of FirstName.Text is compared against "Carlos", "Kirstin", and "John" in that order. "John" との一致が見つかり、アプリは Screen3 に移動します。A match is found with "John", so the app navigates to Screen3. truetrue

表示が Screen3 に変更されます。The display is changed to Screen3.

ステップ バイ ステップStep by step

  1. テキスト入力コントロールを追加し、Text1 という名前を付けます (既定でその名前が付いていない場合)。Add a Text input control, and name it Text1 if it doesn't have that name by default.
  2. [Text1] に「30」と入力します。In Text1, type 30.
  3. ラベル コントロールを追加し、その Text プロパティを次の数式に設定します。Add a Label control, and set its Text property to this formula:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    ラベル コントロールに "Order more!" と表示されます。The Label control shows Order more! これは、Text1 の値が 20 より大きく、40 より小さいためです。because the value of Text1 is more than 20 but less than 40.

  4. [Text1] に「15」と入力します。In Text1, type 15.

    ラベル コントロールに "Order MANY more!" と表示されます。The Label control shows Order MANY more! これは、Text1 の値が 20 より小さいためです。because the value of Text1 is less than 20.

  5. [Text1] に「50」と入力します。In Text1, type 50.

    ラベル コントロールに入力した値が表示されます (値が 40 より大きいため)。The Label control shows the value that you typed because it's more than 40.