IIf 函數

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

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

只要可以使用運算式的地方,都可以使用 IIf。您可以使用 IIf 來判定另一個運算式是 True 還是 False。若運算式為 True ,IIf 會傳回一值;若為 False,IIf 會傳回另一值。您可指定 IIf 傳回的值。

請參閱部分範例

語法

IIf ( expr truepart falsepart )

IIf函數語法具有下列引數:

引數

描述

expr

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

truepart

必要。若 exprTrue,會傳回值或運算式。

falsepart

必要。若 exprFalse,會傳回值或運算式。


註解

即使 IIf 只傳回其中一個部分,但是它一定會評估 truepartfalsepart。所以您還是要注意這些非預期的副作用。比方說,如果評估 falsepart 之後,得出除以零的錯誤,則即使 exprTrue,也會發生錯誤。

範例

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

=IIf([CountryRegion]="義大利", "義大利文", "其他語言")

當您在 [表單] 檢視中開啟表單時,如果 CountryRegion 的值是 "義大利",控制項便會顯示 "義大利文";如果 CountryRegion 的值是其他任何值,控制項便會顯示 "其他語言"。

在複雜運算式中使用 IIf   您可以使用任何運算式為IIf陳述式的任何部分。您可以也 」 巢狀 」 IIf運算式,讓您可以評估一系列的相依運算式。若要繼續上述範例中,您可能會想要測試數種不同的 CountryRegion 值,並顯示 [依據值存在適當的語言:

=IIf([CountryRegion]="義大利", "義大利文", IIf([CountryRegion]="法國", "法文", IIf([CountryRegion]="德國", "德文", "其他語言")))

"其他語言" 是最內部 IIf 函數的 falsepart 引數。由於每一個巢狀的 IIf 函數,都是包含該函數之 IIf 函數的 falsepart 引數,因此只有當所有 IIf 函數的所有 expr 引數都評估為 False 時,才會傳回 "其他語言"。

再舉一個例子,假設您在圖書館工作。圖書館資料庫有一份名為「外借」的資料表,當中有一個名為「到期日」的欄位,內容是某一本書籍的還書到期日。您可以建立一個表單,在控制項中指出外借項目的狀態,做法是在該控制項的 [控制項資料來源] 屬性內使用 IIf 函數,如下所示:

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

當您在 [表單] 檢視中開啟表單時,如果 Due Date 的值少於目前日期,控制項便會顯示 "已過期";如果等於目前日期,則會顯示 "今天到期";如果都不是,則會顯示 "尚未到期"。

附註: 若要使用邏輯運算子,例如 「 和 」 或 「 或者 」 的IIf函數的expr引數,您必須將中的邏輯運算式Eval函數。請參閱範例所示。

在查詢中使用 IIf   

IIf函數常用在查詢中建立導出的欄位。語法不一樣,在查詢中,您必須開頭欄位別名與冒號 (:),而不是以等號 (=) 運算式例外狀況。若要使用上述範例中,您可以在查詢設計格線的 [欄位] 列中鍵入下列動作:

語言: IIf([CountryRegion]="義大利", "義大利文", "其他語言")

在這個案例中,"語言:" 就是欄位別名。

如需建立查詢和導出的欄位的詳細資訊,請參閱建立簡單的選取查詢的文件。

VBA 程式碼中使用 IIf   

附註: 下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。

本範例是使用 IIf 函數來評估 CheckIt 程序的 TestMe 參數,如果其值大於 1000,則傳回 "大" 這個字;否則就傳回 "小" 這個字。

Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function

其他範例

運算式

結果

=IIf([AirportCode]="ORD","芝加哥",IIf([AirportCode]="ATL","亞特蘭大",IIf([AirportCode]="SEA","西雅圖","其他")))

如果 [AirportCode] 是 "ORD",則傳回 "芝加哥"。如果 [AirportCode] 是 "ATL",則傳回 "亞特蘭大"。如果 [AirportCode] 是 "SEA",則傳回 "西雅圖"。如果都不是,則傳回 "其他"。

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

如果 [ShipDate] 早於今天日期,則傳回 "已出貨"。如果 [ShipDate] 等於今天日期,則傳回 "今天出貨"。如果都不是,則傳回 "未出貨"。

=IIf([PurchaseDate]<#2008/1/1#,"舊","新")

如果 [PurchaseDate] 早於 2008/1/1,則傳回 "舊"。如果不是,則傳回 "新"。

=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"合格","不合格")

如果 [Volts] 是介於 12 和 15 之間,而且 [Amps] 是介於 0.25 和 0.3 之間,則傳回 "合格"。如果不是,則傳回 "不合格"。

=IIf(Eval([CountryRegion] In ("加拿大","美國","墨西哥")),"北美洲","其他")

如果 [CountryRegion] 是 "加拿大"、"美國" 或 "墨西哥",則傳回 "北美洲"。如果都不是,則傳回 "其他"。

=IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))

如果 [Average] 是 90 或超過 90,則傳回 "A"。如果 [Average] 是 80 或超過 80,則傳回 "B"。如果 [Average] 是 70 或超過 70,則傳回 "C"。如果 [Average] 是 60 或超過 60,則傳回 "D"。如果都不是,則傳回 "F"。

附註: 如果您使用IIf函數在查詢中建立的導出的欄位,取代等號 (=) 欄位別名與冒號 (:)。例如,狀態: IIf ([ShipDate] < Date (),「 隨附",IIf ([ShipDate] = Date (),「 今天貨運 」、 「 Unshipped 」))

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

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

這項資訊有幫助嗎?

感謝您的意見反應!

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

×