适用于: 画布应用
Copilot Studio
Desktop 流
Dataverse 公式列
模型驱动应用
Power Platform CLI
Dataverse 函数
Power Pages
确定集中的任何条件是否为 true(If)或公式的结果是否与集(Switch)中的任何值匹配,然后返回结果或执行作。
描述
该 If 函数测试一个或多个条件,直到找到 真正的 结果。 If 找到这样的结果,将返回相应的值。 If 找不到此类结果,将返回默认值。 无论属于上述哪种情况,返回的值可以是要显示的字符串、要求值的公式或另一种形式的结果。
该 Switch 函数计算公式并确定结果是否与指定的序列中的任何值匹配。 If 找到匹配项,将返回相应的值。 If 找不到匹配项,将返回默认值。 无论属于上述哪种情况,返回的值可以是要显示的字符串、要求值的公式或另一种形式的结果。
If 并且 Switch 非常相似,但应为情况使用最佳功能:
- 用于 If 评估单个条件。 此函数的最常见语法是If(Condition,ThenResult,DefaultResult),它提供常见的“if... 然后。。。 在其他编程工具中看到的 else …" 模式。
- 用于 If 评估多个不相关的条件。 在 Power Apps(与 Microsoft Excel 不同)中,可以指定多个条件,而无需嵌套 If 公式。
- 用于 Switch 根据多个可能的匹配项评估单个条件。 也可以在此示例中使用 If ,但需要针对每个可能的匹配重复公式。
可以在行为公式中结合使用这两个函数,在两个或多个操作之间形成分支。 操作只由一个分支触发。 将按顺序对条件和匹配进行求值,如果条件为 true 或找到匹配项,将停止求值。
如果没有条件为 true ,未找到匹配项,并且您未指定默认结果,则返回 Blank。
语法
If(Condition,ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ...[ , DefaultResult ] ])
- 条件 - 必需。 要测试是否为 true 的公式。 此类公式通常包含比较运算符(如 <、> 和 =)和测试函数(如 IsBlank 和 IsEmpty)。
- ThenResults - 必需。 对计算结果为 true 的条件返回的对应值。
- DefaultResult - 可选。 没有条件求值为 true 时返回的值。 If 未指定此参数,则返回 空白 。
Switch( 公式, Match1, Result1 [, Match2, Result2, ...[, 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” |
在行为公式中分支
在下面这些示例中,用户在名为 FirstName 的 Text 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。 |
分步操作
添加 Text input 控件,再将它命名为 Text1(如果默认名称不是这样的话)。
在 Text1 中,键入 30。
添加一个 Label 控件,然后将 Text 属性设置为以下公式:
If(Value(Text1.Text) < 20, “Order more!”, Value(Text1.Text) < 40, “Order more!”, Text1.Text )此时,Label 控件显示 Order more!,因为 Text1 的值大于 20 但小于 40。
在 Text1 中,键入 15。
此时,Label 控件显示 Order MANY more!,因为 Text1 的值小于 20。
在 Text1 中,键入 50。
此时,Label 控件显示所键入的值,因为 Text1 的值大于 40。