會視運算式的評估而定,傳回兩個部分的其中一個部分。
你可以用 IIf 任何能用表達式的地方。 用 IIf 來判斷另一個表達式是真還是假。 若表達式為真,則 IIf 回傳一個值。 如果是假的,則 IIf 會回傳另一個值。 你指定回傳的 IIf 值。
語法
IIf(expr, truepart, falsepart)
IIf函數語法包含以下參數:
| 引數 | 描述 |
|---|---|
expr |
必要。 你想評估的表達方式。 |
truepart |
必要。 若為 ,True則回傳 值或表達式。expr |
falsepart |
必要。 若為 ,False則回傳 值或表達式。expr |
註解
IIf 即使只返回其中一個,仍然總是同時評估 truepart 和 falsepart。 因此,請注意不良副作用。 例如,若評估falsepart結果為除以零誤差,即使 為 ,True仍會產生expr誤差。
範例
用於 IIf 表單或報告
假設你有一個 Customers 包含一個名為 CountryRegion的欄位的表格。 在表格中,你要證明義大利語是否為聯絡人的第一語言。 你可以在其屬性中新增控制項並使用IIfControl Source:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
當你在表單檢視中開啟表單時,控制項會顯示在值CountryRegion為 Italy時顯示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 參數,只有 Some other language 當 expr 所有函數的參數都值 IIf 為 False時,文本才會回傳。
再舉一個例子,假設你在圖書館工作。 圖書館資料庫有一個名為 Check Outs 的表格,裡面有一個名為 Due Date的欄位,該欄位包含某本書的歸還日期。 你可以透過控制項屬性中的Control Source函IIf式建立表單,顯示已借出項目的狀態:
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
當你在 表單檢視中開啟表單時,控制項會顯示 OVERDUE 的 Due 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
更多例子
表達式:
=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]、"USA""Canada"、"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"))。