IIf 函数

返回两个部分之一,具体取决于计算结果 表达式 。

可以在可以使用表达式的任何位置使用IIf。 使用 IIf 来确定另一个表达式是 true 还是 false。 如果表达式为 true, 则 IIf 返回一个值;如果为 false, 则 IIf 返回另一个。 指定 IIf 返回 的值。

请参阅一些示例

语法

IIf ( expr、truepart、falsepart )

IIf 函数语法具有下列参数:

参数

说明

expr

必需。 要计算结果的表达式。

truepart

必需。 expr 为True 时返回的值或表达式

falsepart

必需。 expr 为 False 时返回的值或 表达式


备注

IIf 始终计算 truepart 和falsepart,即使它仅返回其中一个。 因此,应留意不良副作用。 例如,如果计算 falsepart导致除数为零错误,则即使 expr 为True,也会出现错误

示例

在窗体或报表上使用 IIf   假设有一个"客户"表,其中包含名为 CountryRegion 的字段。 在表单中,您希望指示意大利语是否是联系人的第一种语言。 可以添加控件,并 在其"控件源 "属性 中使用 IIf,如下所示:

=IIf ([CountryRegion]="Italy", "Italian", "Some other language")

在窗体视图中打开窗体时,只要 CountryRegion 的值为意大利,控件就会显示"意大利语",每当 CountryRegion 为任何其他值时,控件将显示"某种其他语言"。

在复杂表达式中使用 IIf   可以将任何表达式用作 IIf 语句的任何部分。 还可以"嵌套 "IIf 表达式,以便计算一系列依赖表达式。 若要继续前面的示例,可能需要测试多个不同的 CountryRegion 值,然后根据存在的值显示相应的语言:

=IIf ([CountryRegion]="Italy", "Italian", IIf ([CountryRegion]="France", "French", IIf ([CountryRegion]="Germany", "German", "Some other language") ) )

文本"某些其他语言"是最内层IIf函数的falsepart参数。 由于每个嵌套IIf函数都是包含它的IIf函数的falsepart参数,因此,只有当所有IIf函数的所有expr参数计算结果为 False 时,才返回文本"其他某种语言"。

另举一例,假设你在库中工作。 库数据库有一个名为"签出"的表,其中包含一个名为"截止日期"的字段,其中包含特定书籍的截止日期。 可以使用控件的"控件来源"属性中的IIf函数创建一个窗体,用于指示控件中已签出项的状态,如下所示:

=IIf ([截止日期]<日期 () ,"过期",IIf ([截止日期]=Date () ,"今天到期","尚未到期") )

在窗体视图中打开窗体时,如果"截止日期"的值小于当前日期,则控件将显示"过期";如果当前日期等于当前日期,则显示"今天到期";否则显示"尚未到期"。

注意: 若要在IIf函数的expr参数中使用逻辑运算符(如"And"或"Or",必须在 Eval 函数中将逻辑表达式 括起来。 请参阅以下示例表。

在查询中使用 IIf    

IIf函数通常用于在查询中创建计算字段。 语法相同,但查询中的例外情况是,必须以字段别名和冒号 () 而不是等号 (=) 开头。 若要使用上述示例,在查询设计网格的" 字段"行 中键入以下内容:

语言:IIf ([CountryRegion]="Italy", "Italian", "Some other language")

在这种情况下,"Language:"是字段别名。

有关创建查询和计算字段的信息,请参阅"创建简单的选择查询 "一文

在 VBA 代码中使用 IIf    

注意: 以下示例演示了在 VBA Visual Basic for Applications (模块) 函数。 有关使用 VBA 的信息,请在"搜索"旁边的下拉列表中选择"开发人员参考",在搜索框中输入一个或多个术语。

此示例使用 IIf 函数计算 CheckIt 过程 TestMe 参数,如果数量大于 1000,则返回单词"Large";否则,它将返回单词"Small"。

Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

更多示例

表达式

结果

=IIf ([AirportCode]="ORD","Chicago",IIf ([AirportCode]="ATL","亚特兰大",IIf ([AirportCode]="SEA","Seattle","Other") ) )

如果 [AirportCode] 为"ORD",则返回"Chicago"。 否则,如果 [AirportCode] 为"ATL",则返回"亚特兰大"。 否则,如果 [AirportCode] 为"SEA",则返回"Seattle"。 否则,返回"其他"。

=IIf ([ShipDate]<Date () ,"Shipped",IIf ([ShipDate]=Date () ,"Shipping today","Unshipped") )

如果 [ShipDate] 在今天的日期之前,则返回"已发货"。 否则,如果 [ShipDate] 等于今天的日期,则返回"今天发货"。 否则,返回"未解压缩"。

=IIf ([PurchaseDate]<#1/1/2008#,"Old","New")

如果 [PurchaseDate] 在 2008 年 1 月 1 日之前,则返回"Old"。 否则,返回"New"。

=IIf (Eval ([Amps] 介于 12 和 15 和 [Amps] 之间 0.25 和 0.3) ,"正常","校准外")

如果 [Vols] 介于 12 和 15 之间,并且 [Amps] 介于 0.25 和 0.3 之间,则返回"OK"。 否则,返回"校准外"。

=IIf (Eval ([CountryRegion] in ("Canada","USA","Mexico") ) ,"North America","Other")

如果 [CountryRegion] 为"Canada"、"USA"或"Mexico",则返回"North America"。 否则,返回"其他"。

=IIf ([Average]>=90,"A",IIf ([Average]>=80,"B",IIf ([Average]>=70,"C",IIf ([Average]>=60,"D","F") ) ) )

如果 [Average] 为 90 或更大,则返回"A"。 否则,如果 [Average] 为 80 或更大,则返回"B"。 否则,如果 [Average] 为 70 或更大,则返回"C"。 否则,如果 [Average] 为 60 或更大,则返回"D"。 否则,返回"F"。

注意: 如果使用IIf函数在查询中创建计算字段,请将等号 (=) 替换为字段别名和冒号 (:) 。 例如,状态 :IIf ([ShipDate]<Date () ,"Shipped",IIf ([ShipDate]=Date () ,"Shipping today","Unshipped") )

需要更多帮助?

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×