If 和 Switch 函数

适用于: 画布应用 Copilot Studio Desktop 流 Dataverse 公式列 模型驱动应用 Power Platform CLI Dataverse 函数 Power Pages

确定集中的任何条件是否为 true(If)或公式的结果是否与集(Switch)中的任何值匹配,然后返回结果或执行作。

描述

If 函数测试一个或多个条件,直到找到 真正的 结果。 If 找到这样的结果,将返回相应的值。 If 找不到此类结果,将返回默认值。 无论属于上述哪种情况,返回的值可以是要显示的字符串、要求值的公式或另一种形式的结果。

Switch 函数计算公式并确定结果是否与指定的序列中的任何值匹配。 If 找到匹配项,将返回相应的值。 If 找不到匹配项,将返回默认值。 无论属于上述哪种情况,返回的值可以是要显示的字符串、要求值的公式或另一种形式的结果。

If 并且 Switch 非常相似,但应为情况使用最佳功能:

  • 用于 If 评估单个条件。 此函数的最常见语法是IfCondition,ThenResult,DefaultResult),它提供常见的“if... 然后。。。 在其他编程工具中看到的 else …" 模式。
  • 用于 If 评估多个不相关的条件。 在 Power Apps(与 Microsoft Excel 不同)中,可以指定多个条件,而无需嵌套 If 公式。
  • 用于 Switch 根据多个可能的匹配项评估单个条件。 也可以在此示例中使用 If ,但需要针对每个可能的匹配重复公式。

可以在行为公式中结合使用这两个函数,在两个或多个操作之间形成分支。 操作只由一个分支触发。 将按顺序对条件和匹配进行求值,如果条件为 true 或找到匹配项,将停止求值。

如果没有条件为 true ,未找到匹配项,并且您未指定默认结果,则返回 Blank

语法

IfCondition,ThenResult [, DefaultResult ] )
IfCondition1ThenResult1 [, Condition2ThenResult2, ...[ , DefaultResult ] ])

  • 条件 - 必需。 要测试是否为 true 的公式。 此类公式通常包含比较运算符(如 <>=)和测试函数(如 IsBlankIsEmpty)。
  • ThenResults - 必需。 对计算结果为 true 的条件返回的对应值。
  • DefaultResult - 可选。 没有条件求值为 true 时返回的值。 If 未指定此参数,则返回 空白

Switch公式Match1Result1 [, Match2Result2, ...[, DefaultResult ] ])

  • 公式 - 必需。 为进行匹配而求值的公式。 此公式仅求值一次。
  • 匹配项 - 必需。 要与 Formula 结果比较的值。 If 找到完全匹配项,将返回相应的 结果
  • 结果 - 必需。 找到完全匹配项时返回的相应值。
  • DefaultResult - 可选。 If 找不到完全匹配项,则返回此值。 If 未指定此参数,则返回 空白

示例

公式中的值

在下面这些示例中,Slider 控件(名为 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”

在行为公式中分支

在下面这些示例中,用户在名为 FirstNameText input 控件中键入的值为“John”。

公式 描述 结果
If( ! IsBlank(FirstName.Text),Navigate(Screen1,ScreenTransition.None) 条件为 true,因此将运行 Navigate 函数。 可使用 IsBlank 函数测试所需的窗体字段是否已填充。 If 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, “Order more!”, Value(Text1.Text) < 40, “Order more!”, Text1.Text )

    此时,Label 控件显示 Order more!,因为 Text1 的值大于 20 但小于 40。

  4. Text1 中,键入 15

    此时,Label 控件显示 Order MANY more!,因为 Text1 的值小于 20。

  5. Text1 中,键入 50

    此时,Label 控件显示所键入的值,因为 Text1 的值大于 40。