IIf 函數

根據函數的評估,會以兩個部分之一 運算式。

您可以在任何可以使用運算式的地方使用IIf。 您可以使用 IIf 來判斷另一個運算式為 True 或 False。 如果運算式為 True,IIf 會 返回一個值;如果為 False,IIf 會 再返回另一個。 您可以指定 IIf 會返回 的值。

查看一些範例

語法

IIf ( expr, truepart, falsepart)

IIf 函數語法具有這些引數:

引數

描述

expr

必要。 您想要評估的運算式。

truepart

必要。 運算式為 True 時所 返回 的值或運算式

falsepart

必要。 如果 expr 為False,則會返回值或運算式


註解

IIf 會 一直評估 Truepart 和falsepart,即使它只會返回其中一個。 因此,您應該留意不想要的副作用。 例如,如果評估falsepart的結果為除數為零錯誤,即使 expr 為True,也會發生錯誤。

範例

在表單或報表上使用 IIf   假設您有一個客戶資料表,其中包含名為 CountryRegion 的欄位。 在表單中,您想要表示義大利文是否是連絡人的第一種語言。 您可以在控制項來源屬性中新增控制項並使用IIf,如下所示:

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

當您在表單檢視中開啟表單時,每當 CountryRegion 的值是義大利時,控制項就會顯示 "Italy",而每當 CountryRegion 是其他任何值時,就會顯示 "Some other language"。

在複雜的運算式中使用 IIf   您可以使用任何運算式做為 IIf 語句的任何部分。 您也可以「巢中 」IIf 運算式,讓您評估一系列從屬運算式。 若要繼續上述範例,您可能會想要測試數個不同的 CountryRegion 值,然後根據值存在時顯示適當的語言:

=IIf ([CountryRegion]="Italy", "Italy", IIf ([CountryRegion]="France", "French", IIf ([CountryRegion]="Germany", "德國", "一些其他語言") ) )

「某些其他語言」文字是最內層IIf函數的falsepart引數。 由於每個巢巢式 IIf函數都是包含該函數之 IIf函數的falsepart引數,因此只有在所有IIf函數的運算式引數都評估為 False 時,才會返回「某些其他語言」文字。

另一個範例,假設您使用文件庫。 文件庫資料庫有一個名為 Outs 的資料表,其中包含名為到期日的欄位,其中包含特定書籍的到期日。 您可以使用控制項的 Control Source 屬性中的IIf函數建立表單,指出控制項中已簽出項目的狀態,如下所示:

=IIf ([到期日]<Date () ,"逾期",IIf ([Due Date]=Date () ,"今天到期","尚未到期") )

當您在表單檢視中開啟表單時,如果到期日的值小於目前日期,控制項會顯示「逾期」;若為等於目前日期,則顯示「今天到期」;否則顯示「尚未到期」。

附註: 若要在IIf函數的expr引數中使用邏輯運算子 ,例如 "And" 或 "Or",您必須將邏輯運算式括在 Eval函數中。 請參閱以下範例表格。

在查詢中使用 IIf    

IIf函數常用於建立查詢中的計算欄位。 語法相同,但查詢中,您必須在運算式的開頭輸入欄位別名和冒號 (:) ,而非等號 (=) 。 若要使用上述範例,您可以在查詢設計格線中的 欄位列輸入 下列專案:

語言:IIf ([CountryRegion]="Italy", "Italy", "Some other language")

在此案例中,"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

更多範例

運算式

結果

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

如果 [AirportCode] 是 "ORD",請返回 "Chicago"。 否則,如果 [AirportCode] 是 "ATL",則返回 "Airport"。 否則,如果 [AirportCode] 是 "SEA",則返回 "Seattle"。 否則,請返回 "Other"。

=IIf ([ShipDate]<Date () ,"已出貨",IIf ([ShipDate]=Date () ,"今天出貨","未) )

如果 [ShipDate] 在今天日期之前,請退回 "Shipped"。 否則,如果 [ShipDate] 等於今天的日期,請退回「今天出貨」。 否則,請返回「未取消壓縮」。

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

如果 [PurchaseDate] 是在 2008/1/1 之前,請退回 "Old"。 否則,請返回 「新增」。

=IIf (Eval ([量值] 介於 12 和 15 和 [Amps] 介於 0.25 和 0.3) ,"OK","不校正")

如果 [放大] 介於 12 和 15 之間,而 [Amps] 介於 0.25 和 0.3 之間,請返回 "OK"。 否則,請返回「無法校正」。

=IIf (Eval ([CountryRegion] in ("Canada","USA","Mexico") ) ,"北美","Other")

如果 [CountryRegion] 是 "Canada"、"USA" 或 "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 函數在查詢中建立計算欄位,請將等號 (=) 取代為欄位別名和冒號 (:) 。 例如,狀態 :IIf ([ShipDate]<Date () ,"已出貨",IIf ([ShipDate]=Date () ,"今天出貨","Unshipped") )

需要更多協助?

增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×