返回两个部分之一,具体取决于 表达式 的计算结果。
可以在任何可以使用表达式的位置使用 IIf 。 使用 IIf 确定另一个表达式是 true 还是 false。 如果表达式为 true, 则 IIf 返回一个值;如果为 false, 则 IIf 返回另一个。 指定 IIf 返回的值。
语法
IIf ( expr 、 truepart 、 falsepart )
IIf 函数语法具有下列参数:
参数 |
说明 |
expr |
必需。 要计算的表达式。 |
truepart |
必需。 如果 expr 为 True,则返回的值或表达式。 |
falsepart |
必需。 如果 expr 为 False,则返回的值或表达式。 |
备注
IIf 始终计算 truepart 和 falsepart,即使只返回其中一个。 因此,应watch以产生不良副作用。 例如,如果计算 falsepart 导致除以零误差,则即使 expr 为 True,也会发生错误。
示例
在窗体或报表上使用 IIf 假设你有一个 Customers 表,其中包含名为 CountryRegion 的字段。 在窗体中,你想要表示意大利语是否是联系人的第一语言。 可以添加控件并在其 Control Source 属性中使用 IIf,如下所示:
=IIf ([CountryRegion]=“Italy”、“意大利语”、“其他语言”)
在窗体视图中打开窗体时,每当 CountryRegion 的值为意大利时,控件将显示“意大利语”,当 CountryRegion 为任何其他值时,将显示“某些其他语言”。
在复杂表达式中使用 IIf 可以使用任何表达式作为 IIf 语句的任何部分。 还可以“嵌套” IIf 表达式,以便计算一系列依赖表达式。 若要继续上述示例,可能需要测试多个不同的 CountryRegion 值,然后根据存在的值显示相应的语言:
=IIf ([CountryRegion]=“Italy”, “Italian”, IIf ([CountryRegion]=“France”, “French”, IIf ([CountryRegion]=“Germany”, “German”, “other language”) ) )
文本“其他一些语言”是最内部 IIf 函数的 falsepart 参数。 由于每个嵌套的 IIf 函数都是包含它的 IIf 函数的 falsepart 参数,因此仅当所有 IIf 函数的所有 expr 参数都计算为 False 时,才返回文本“某些其他语言”。
对于另一个示例,假设你在库中工作。 库数据库有一个名为“签出”的表,其中包含名为“截止日期”的字段,该字段包含特定书籍的到期日期。 可以使用控件的 Control Source 属性中的 IIf 函数创建一个窗体,以指示控件中已签出项的状态,如下所示:
=IIf ([截止日期]<Date () ,“OVERDUE”,IIf ([截止日期]=Date () ,“今天到期”,“尚未到期”) )
在窗体视图中打开窗体时,如果截止日期的值小于当前日期,则控件将显示“OVERDUE”;如果该值等于当前日期,则显示“今天到期”,否则显示“尚未到期”。
注意: 若要在 IIf 函数的 expr 参数中使用“And”或“Or”等逻辑运算符,必须将逻辑表达式括在 Eval 函数中。 请参阅下面的示例表。
在查询中使用 IIf
IIf 函数通常用于在查询中创建计算字段。 语法相同,但除了在查询中,必须在表达式前面加上字段别名和冒号 (:) 而不是等号 (=) 。 若要使用前面的示例,请在查询设计网格的 “字段” 行中键入以下内容:
语言:IIf ([CountryRegion]=“Italy”、“意大利语”、“其他语言”)
在本例中,“Language:”是字段别名。
有关创建查询和计算字段的详细信息,请参阅 创建简单的选择查询一文。
在 VBA 代码中使用 IIf
注意: 下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。
此示例使用 IIf 函数计算 CheckIt 过程的 TestMe 参数,如果数量大于 1000,则返回单词“Large”;否则,它将返回单词“Small”。
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
更多示例
Expression |
结果 |
=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 () ,“Shipping”,IIf ([ShipDate]=Date () ,“Shipping today”,“Unshipped”) ) |
如果 [ShipDate] 早于今天的日期,则返回“已发货”。 否则,如果 [ShipDate] 等于今天的日期,则返回“今天发货”。 否则,返回“Unshipped”。 |
=IIf ([PurchaseDate]<#1/1/2008#,“Old”,“New”) |
如果 [PurchaseDate] 早于 2008 年 1 月 1 日,则返回“Old”。 否则,返回“New”。 |
=IIf (eval ([Volts] 介于 12 到 15 之间,在 0.25 到 0.3) 之间 [Amps] ,“确定”,“校准外”) |
如果 [Volts] 介于 12 和 15 之间,并且 [Amps] 介于 0.25 和 0.3 之间,则返回“OK”。 否则,返回“校准不足”。 |
=IIf (Eval ([CountryRegion] in (“Canada”,“USA”,“Mexico”) ) ,“北美”,“Other”) |
如果 [CountryRegion] 为“Canada”、“USA”或“Mexico”,则返回“北美”。 否则,返回“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 函数在查询中创建计算字段,请将等号 (=) 替换为字段别名和冒号 (:) 。 例如, 状态:IIf ([ShipDate]<Date () ,“Shipping”,IIf ([ShipDate]=Date () ,“Shipping today”,“Unshipped”) )