使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

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

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

查看一些示例

语法

IIf ( expr truepart falsepart )

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

参数

说明

expr

必需。 要计算的表达式。

truepart

必需。 如果 exprTrue,则返回的值或表达式。

falsepart

必需。 如果 exprFalse,则返回的值或表达式。


备注

IIf 始终计算 truepartfalsepart,即使只返回其中一个。 因此,应watch以产生不良副作用。 例如,如果计算 falsepart 导致除以零误差,则即使 exprTrue,也会发生错误。

示例

在窗体或报表上使用 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”) )

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×