If 與 Switch 函式

適用於: 畫布應用程式 Dataverse 公式欄 桌面流程 模型導向應用程式 Power Platform CLI

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

描述

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

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

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

  • 使用 If 來評估單一條件。 此函數最常見的語法是 If( Condition, ThenResult, DefaultResult ),該語法提供常見的 "if … then … else …" 模式,常在其他程式設計工具中看到。
  • 使用 If 來評估多個不相關的條件。 在 Power Apps (不像 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) - 必要項目。 與 Formula 的結果進行比較的值。 如果找到完全相符的項目,則會傳回對應的 Result
  • Result(s) - 必要項目。 找到完全相符的項目時傳回的對應值。
  • DefaultResult - 非必要項目。 如果找不到完全相符的項目,則會傳回此值。 如果您沒有指定這個引數,會傳回 空白

範例

公式中的值

在下列範例中,名為 Slider1Slider 控制項值為 25

公式 描述 Result
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"

行為公式中的分支

在這些範例中,名為 FirstNameText input 控制項已在其中輸入 "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. 新增 Text input 控制項,如果它依預設沒有該名稱,則將其命名為 Text1

  2. Text1 中,輸入 30

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

    Label 控制項顯示訂購更多!,因為 Text1 的值大於 20 小於 40。

  4. Text1 中,輸入 15

    Label 控制項顯示訂購非常更多!,因為 Text1 的值小於 20。

  5. Text1 中,輸入 50

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