IIf 函数

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

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

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

查看一些示例

语法

IIf(expr, truepart, falsepart)

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

参数 说明
expr 必需。 要计算其值的表达式。
truepart 必需。 如果 exprTrue,则返回的值或表达式。
falsepart 必需。 如果 exprFalse,则返回的值或表达式。

备注

IIf 始终计算 truepartfalsepart,即使只返回其中一个。 由于此行为,请留意不需要的副作用。 例如,如果评估 falsepart 结果为“被零除”错误,则即使 exprTrue也会发生错误。

示例

在窗体或报表上使用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 languagefalsepartIIf 内部函数的参数。 由于每个嵌套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逻辑运算符(如 AndOr ),必须将逻辑表达式括在 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

更多示例

  1. 表达:

    =IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))
    

    结果:如果 [AirportCode]"ORD",则返回 "Chicago"。 否则,如果 [AirportCode]"ATL",则返回 "Atlanta"。 否则,如果 [AirportCode]"SEA",则返回 "Seattle"。 否则,返回 "Other"

  2. 表达:

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

    结果:如果 [ShipDate] 早于今天的日期,则返回 "Shipped"。 否则,如果 [ShipDate] 等于今天的日期,则返回 "Shipping today"。 否则,返回 "Unshipped"

  3. 表达:

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

    结果:如果 [PurchaseDate] 早于 1/1/2008,则返回 "Old"。 否则,返回 "New"

  4. 表达:

    =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"

  5. 表达:

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

    结果:如果 [CountryRegion]"Canada""USA""Mexico",则返回 "North America"。 否则,返回 "Other"

  6. 表达:

    =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"))