決定集合中的任何條件是否為 true (If),或者公式的結果是否符合集合中的任何值 (Switch),然後傳回結果或執行動作。

說明

If 函式會測試一或多個條件,直到找到 true 結果為止。 如果找到這類結果,則會傳回對應值。 如果找不到這類結果,則會傳回預設值。 在任一情況下,傳回的值可能是要顯示的字串、要評估的公式,或另一種形式的結果。

Switch 函式會評估公式,並判斷結果是否符合您指定的序列中的任何值。 如果找到相符項目,則會傳回對應值。 如果找不到相符項目,則會傳回預設值。 在任一情況下,傳回的值可能是要顯示的字串、要評估的公式,或另一種形式的結果。

IfSwitch 非常相似,但是您應該針對您的情況使用最佳的函式:

  • 使用 If 來評估單一條件。 此函式最常見的語法是 If( Condition, ThenResult, DefaultResult ),該語法提供常見的 “if … then … else …” 模式,常在其他程式設計工具中看到。
  • 使用 If 來評估多個不相關的條件。 在 PowerApps (不像 Microsoft Excel) 中,您可以指定多個條件而不用讓 If 公式成為巢狀。
  • 使用 Switch 針對多個可能的相符項目評估單一條件。 您也可以在此案例中使用 If,但是您不需要對每個可能的相符項目重複公式。

您可以在行為公式中同時使用這兩個函式,以在兩個以上的動作之間分支。 只有一個分支會觸發動作。 條件和相符項目是按照順序進行評估,如果條件為 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 - 必要項目。 評估相符項目的公式。 此公式只評估一次。
  • Match(s) - 必要項目。 與「公式」的結果進行比較的值。 如果找到完全相符的項目,則會傳回對應的結果。
  • Result(s) - 必要項目。 找到完全相符的項目時傳回的對應值。
  • DefaultResult - 選擇性。 如果找不到完全相符的項目,則會傳回此值。 如果您沒有指定這個引數,會傳回空白。

範例

公式中的值

在下列範例中,名為 Slider1滑桿控制項具有值 25

公式 說明 結果
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" ) 第一個條件是 true,並傳回對應的結果。 第二個條件也是 true,但是不會評估它,因為它會比評估為 true 的條件更晚出現在引數清單中。 "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) 第一個條件是 false,因為滑桿不是空白。 第二個條件是 true,因為滑桿的值是數字,並傳回對應的結果。 "Result2"
If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") 第一個和第二個條件都是 false ,且已提供並傳回 DefaultResult。 "Result3"
Switch( Slider1.Value, 25, "Result1" ) 滑桿的值符合要檢查的第一個值,並且傳回對應的結果。 "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) 滑桿的值符合要檢查的第二個值,並且傳回對應的結果。 "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) 滑桿的值不符合要檢查的任何值。 提供 DefaultResult,因此傳回該值。 "DefaultResult"

行為公式中的分支

在這些範例中,名為 FirstName文字輸入控制項已在其中輸入 "John" 的值。

公式 說明 結果
If( !IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) 條件是 true,因此執行 Navigate 函式。 您可以使用 IsBlank 函式來測試是否已填入必要的表單欄位。 如果 FirstName空白,此公式不會有任何作用。 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. 新增文字輸入控制項,如果它依預設沒有該名稱,則將其命名為 Text1

  2. Text1 中,輸入 30

  3. 新增標籤控制項,並將其 Text 屬性設為以下公式:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    標籤控制項會顯示訂購更多! 因為 Text1 的值超過 20 但少於 40。

  4. Text1 中,輸入 15

    標籤控制項會顯示再訂購更多! 因為 Text1 的值少於 20。

  5. Text1 中,輸入 50

    標籤控制項會顯示您輸入的值,因為它超過 40。