IIf 函數

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

會視運算式的評估而定,傳回兩個部分的其中一個部分。

你可以用 IIf 任何能用表達式的地方。 用 IIf 來判斷另一個表達式是真還是假。 若表達式為真,則 IIf 回傳一個值。 如果是假的,則 IIf 會回傳另一個值。 你指定回傳的 IIf 值。

請參考一些範例

語法

IIf(expr, truepart, falsepart)

IIf函數語法包含以下參數:

引數 描述
expr 必要。 你想評估的表達方式。
truepart 必要。 若為 ,True則回傳 值或表達式。expr
falsepart 必要。 若為 ,False則回傳 值或表達式。expr

註解

IIf 即使只返回其中一個,仍然總是同時評估 truepartfalsepart。 因此,請注意不良副作用。 例如,若評估falsepart結果為除以零誤差,即使 為 ,True仍會產生expr誤差。

範例

用於 IIf 表單或報告

假設你有一個 Customers 包含一個名為 CountryRegion的欄位的表格。 在表格中,你要證明義大利語是否為聯絡人的第一語言。 你可以在其屬性中新增控制項並使用IIfControl Source

=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 是最 falsepartIIf 在功能的論證。 由於每個巢狀函 IIf 數都是 falsepart 包含該函數的 IIf 參數,只有 Some other languageexpr 所有函數的參數都值 IIfFalse時,文本才會回傳。

再舉一個例子,假設你在圖書館工作。 圖書館資料庫有一個名為 Check Outs 的表格,裡面有一個名為 Due Date的欄位,該欄位包含某本書的歸還日期。 你可以透過控制項屬性中的Control SourceIIf式建立表單,顯示已借出項目的狀態:

=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))

當你在 表單檢視中開啟表單時,控制項會顯示 OVERDUEDue Date 值是否小於當前日期、 Due today 是否等於當前日期,以及 Not Yet Due 其他情況。

注意

若要在函數IIf參數中使用邏輯運算exprAndOr子,例如或,必須在 Eval 函數中包含邏輯表達式。 請參考以下範例表格。

查詢中的應用IIf

IIf 函數常用於查詢時建立計算欄位。 語法相同,只是查詢時必須在表達式前加上欄位別名,冒號 (:) ,而非等號 (=) 。 要使用上述範例,請在查詢設計網格的 欄位 列輸入以下內容:

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

在此情況下, Language: 是欄位別名。

欲了解更多關於建立查詢與計算欄位的資訊,請參閱 「建立簡單選擇查詢」。

在 VBA 程式碼中的應用IIf

注意

以下範例展示了如何在 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]"USA""Canada""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"))