分享方式:


If 與 Switch 函式

適用於: 畫布應用 Dataverse 公式列 桌面流 模型驅動應用 Power Pages Power Platform CLI

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

描述

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

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

IfSwitch 非常相似,但您應該使用最適合您情況的函數:

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

您可以在 行為公式 中同時使用這兩個函式,以在兩個以上的動作之間分支。 只有一個分支會觸發動作。 條件和相符項目是按照順序進行評估,如果條件為 true 或者找到相符項目時則會停止。

如果沒有條件為 true ,未找到匹配項,並且您未指定預設結果,則返回 Blank

語法

If條件ThenResult [, 默認結果 ])
If(Condition1,ThenResult1 [, Condition2,ThenResult2 ,...[, DefaultResult ] ])

  • 條件 - 必需。 要針對 true 測試的公式。 此類公式通常包含比較 運算子 (例如 <>,和 =) 並測試函式,例如 IsBlankIsEmpty
  • ThenResults - 必需。 針對評估為 true 的條件傳回的對應值。
  • DefaultResult - 可選。 如果沒有條件評估為 true 時要傳回的值。 如果您沒有指定這個引數,會傳回 空白

Switch公式匹配 1結果 1 [, 匹配 2結果 2,...[, DefaultResult ] ])

  • 公式 - 必需。 評估相符項目的公式。 此公式只評估一次。
  • 匹配項 - 必需。 與 Formula 的結果進行比較的值。 如果找到完全相符的項目,則會傳回對應的 Result
  • 結果 - 必需。 找到完全相符的項目時傳回的對應值。
  • DefaultResult - 可選。 如果找不到完全相符的項目,則會傳回此值。 如果您沒有指定這個引數,會傳回 空白

範例

公式中的值

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

公式 名描述 Result
if(Slider1.Value = 25,“結果 1”) 條件是 true,並傳回對應的結果。 "Result1"
if(滑塊 1.值 = 25,“結果 1”,“結果 2”) 條件是 true,並傳回對應的結果。 "Result1"
if(Slider1.值 > 1000,“result1”) 條件是 false ,且不會提供 DefaultResult 空白
if(Slider1.值 > 1000,“result1”,“result2”) 條件是 false ,且已提供並傳回 DefaultResult "Result2"
if(Slider1.Value = 25,“結果 1”,Slider1.值 > 0,“結果 2”) 第一個條件是 true,並傳回對應的結果。 第二個條件也是 true,但是不會評估它,因為它會比評估為 true 的條件更晚出現在引數清單中。 "Result1"
if (IsBlank(滑塊 1.值),“結果 1”,IsNumeric (滑塊 1.值),“結果 2”) 第一個條件是 false,因為滑桿不是 空白。 第二個條件是 true,因為滑桿值是數字,並傳回對應的結果。 "Result2"
if(Slider1.值 > 1000,“result1”,Slider1.值 > 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空白,此公式不會有任何作用。

顯示變更為 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

按步就班

  1. 新增 Text input 控制項,如果它依預設沒有該名稱,則將其命名為 Text1

  2. Text1 中,輸入 30

  3. 新增 Label 控制項,並將其 Text 屬性設定為下列公式:
    if(value(text1.text) < 20,“訂購更多!”,value(text1.Text) < 40,“訂購更多!”,text1.Text)

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

  4. Text1 中,輸入 15

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

  5. Text1 中,輸入 50

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