IF
检查条件,如果为 TRUE,则返回一个值,否则返回第二个值。
语法
IF(<logical_test>, <value_if_true>[, <value_if_false>])
parameters
术语 | 定义 |
---|---|
logical_test | 计算结果可以是 TRUE 或 FALSE 的任何值或表达式。 |
value_if_true | 逻辑测试为 TRUE 时返回的值。 |
value_if_false | (可选)逻辑测试为 FALSE 时返回的值。 如果省略,则返回 BLANK。 |
返回值
为 value_if_truevalue_if_false 或为空 。
备注
如果 value_if_true 和 value_if_false 的数据类型不同,则 IF 函数可返回可变数据类型;但如果 value_if_true 和 value_if_false 都是数值数据类型,则此函数会尝试返回单个数据类型 。 在后一种情况下,IF 函数会隐式转换数据类型,以容纳这两个值。
例如,公式
IF(<condition>, TRUE(), 0)
返回 TRUE 或 0,而公式IF(<condition>, 1.0, 0)
则只返回十进制值,即使 value_if_false 是整数数据类型,也不例外。 若要详细了解隐式数据类型转换,请参阅数据类型。若要执行分支表达式但不考虑条件表达式,请改用 IF.EAGER。
示例
下面的“产品”表计算的列定义以不同的方式使用 IF 函数根据每种产品的标价对其进行分类。
第一个示例测试“标价”列的值是否小于 500。 如果此条件为 true,则返回值“低”。 由于没有 value_if_false 值,因此返回空白。
可将本文中的示例与 Adventure Works DW 2020 示例模型结合使用。 若要获取模型,请参阅 DAX 示例模型。
Price Group =
IF(
'Product'[List Price] < 500,
"Low"
)
第二个示例使用相同的测试,但是这次包括 value_if_false 值。 因此,该公式将每种产品分类为标价“低”或“高” 。
Price Group =
IF(
'Product'[List Price] < 500,
"Low",
"High"
)
第三个示例使用相同的测试,但是这次嵌套了 IF 函数来额外执行一项测试。 因此,该公式将每种产品分类为标价“低”、“中等”或“高” 。
Price Group =
IF(
'Product'[List Price] < 500,
"Low",
IF(
'Product'[List Price] < 1500,
"Medium",
"High"
)
)
提示
如果需要嵌套多个 IF 函数,最好使用 SWITCH 函数。 此函数提供了一种更优雅的方式来编写返回两个以上的可能值的表达式。