返回两部分之一,具体取决于表达式的计算结果。
可以使用 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
假设你有一个 Customers 表,其中包含名为 的 CountryRegion字段。 在窗体中,你想要显示意大利语是否是联系人的第一语言。 可以添加控件并在其 Control Source 属性中使用IIf:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
在窗体视图中打开窗体时,每当 的 CountryRegionItaly值为 时,控件将显示Italian。 只要具有任何其他值,它就CountryRegion会出现Some other language。
IIf在复杂表达式中使用
可以在语句的任何部分 IIf 使用任何表达式。 还可以嵌套 IIf 表达式,以便计算一系列依赖表达式。 若要继续上述示例,可能需要测试多个不同的 CountryRegion 值,然后根据值显示相应的语言:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
文本 Some other language 是 falsepart 最 IIf 内部函数的参数。 由于每个嵌套IIf函数都是falsepart包含它的函数的参数IIf,因此仅当函数的所有expr参数IIf的计算结果都为 False时,才会返回文本Some other language。
对于另一个示例,假设你在库中工作。 库数据库有一个名为 的 Check Outs 表,其中包含一个名为 Due Date的字段,该字段包含特定书籍的到期日期。 可以使用控件的 属性中的 函数创建显示控件 IIf 中已签出项状态的 Control Source 窗体:
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
在 窗体视图中打开窗体时,控件将显示 OVERDUE 的值 Due Date 是否小于当前日期、 Due today 是否等于当前日期等 Not Yet Due 。
注意
若要在函数的参数IIf中使用expr逻辑运算符(如 And 或 Or ),必须将逻辑表达式括在 Eval 函数中。 请参阅下面的示例表。
IIf在查询中使用
函数 IIf 通常用于在查询中创建计算字段。 语法是相同的,只不过在查询中,必须使用字段别名和冒号 () : 而不是等号 (=) 的等号来开头表达式。 若要使用前面的示例,请在查询设计网格的 “字段” 行中键入以下内容:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
在本例中, Language: 是字段别名。
有关创建查询和计算字段的详细信息,请参阅 创建简单的选择查询。
在 IIf VBA 代码中使用
注意
以下示例演示如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个术语。
此示例使用 IIf 函数来计算 TestMe 过程的 参数 CheckIt ,如果量大于 1000,则返回 单词 Large 。 否则,它将返回单词 Small。
Function CheckIt(TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
更多示例
表达:
=IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))结果:如果
[AirportCode]为"ORD",则返回"Chicago"。 否则,如果[AirportCode]为"ATL",则返回"Atlanta"。 否则,如果[AirportCode]为"SEA",则返回"Seattle"。 否则,返回"Other"。表达:
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))结果:如果
[ShipDate]早于今天的日期,则返回"Shipped"。 否则,如果[ShipDate]等于今天的日期,则返回"Shipping today"。 否则,返回"Unshipped"。表达:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")结果:如果
[PurchaseDate]早于1/1/2008,则返回"Old"。 否则,返回"New"。表达:
=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")结果:如果
[Volts]介于 12 和 15 之间,并且[Amps]介于 0.25 和 0.3 之间,则返回"OK"。 否则,返回"Out of calibration"。表达:
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")结果:如果
[CountryRegion]为"Canada"、"USA"或"Mexico",则返回"North America"。 否则,返回"Other"。表达:
=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 函数在查询中创建计算字段,请将等号 () = 替换为字段别名和冒号 (:) 。 例如,Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))。