ส่งกลับหนึ่งจากสองส่วน ขึ้นอยู่กับการประเมินผลของ นิพจน์
คุณสามารถใช้ IIf ได้ทุกที่คุณสามารถใช้นิพจน์ คุณใช้ IIf เพื่อตรวจสอบว่านิพจน์อื่นเป็นจริงหรือเท็จ ถ้านิพจน์เป็นจริง IIf จะส่งกลับหนึ่งค่า ถ้าเป็นเท็จ IIf จะส่งกลับค่าอีกค่าหนึ่ง คุณระบุค่า ที่ IIf ส่งกลับ
ไวยากรณ์
IIf ( expr , truepart , falsepart )
ไวยากรณ์ของฟังก์ชัน IIf มีอาร์กิวเมนต์ดังนี้
อาร์กิวเมนต์ |
คำอธิบาย |
expr |
จำเป็น นิพจน์ที่คุณต้องการประเมิน |
truepart |
จำเป็น ค่าหรือนิพจน์ที่ส่งกลับถ้า exprเป็นจริง |
falsepart |
จำเป็น ค่าหรือนิพจน์ที่ส่งกลับถ้า expr เป็น False |
ข้อสังเกต
IIf ประเมินทั้ง truepart และ falsepart เสมอ แม้ว่า IIf จะส่งกลับค่าเพียงหนึ่งรายการก็ตาม ด้วยเหตุนี้คุณควรระวังผลข้างเคียงที่ไม่พึงประสงค์ ตัวอย่างเช่น ถ้าการประเมินผลลัพธ์เป็น falsepart ในการหารด้วยศูนย์ข้อผิดพลาด ข้อผิดพลาดจะเกิดขึ้นแม้ว่า exprเป็นจริง
ตัวอย่าง
ใช้ IIf บนฟอร์มหรือรายงาน สมมติว่าคุณมีตารางลูกค้าที่มีเขตข้อมูลที่ชื่อว่า ภูมิภาคประเทศ ในแบบฟอร์ม คุณต้องการระบุว่าภาษาอิตาลีเป็นภาษาแรกของผู้ติดต่อหรือไม่ คุณสามารถเพิ่มตัวควบคุมและใช้ IIf ในคุณสมบัติ แหล่งตัวควบคุม ดังนี้
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
เมื่อคุณเปิดฟอร์มในมุมมองฟอร์ม ตัวควบคุมจะแสดง "ภาษาอิตาลี" เมื่อใดก็ตามที่ค่าสําหรับ ภูมิภาคประเทศ คือ อิตาลี และ "ภาษาอื่น" เมื่อใดก็ตามที่ ภูมิภาคประเทศ เป็นค่าอื่นๆ
ใช้ IIf ในนิพจน์ที่ซับซ้อน คุณสามารถใช้นิพจน์ใดก็ได้เป็นส่วนหนึ่งของคําสั่ง IIf คุณยังสามารถ "ซ้อน" นิพจน์ IIf ซึ่งช่วยให้คุณสามารถประเมินชุดของนิพจน์ที่อ้างถึงได้ เมื่อต้องการดําเนินการกับตัวอย่างก่อนหน้านี้ต่อ คุณอาจต้องการทดสอบค่า CountryRegion ที่แตกต่างกันหลายค่า จากนั้นแสดงภาษาที่เหมาะสมโดยขึ้นอยู่กับค่าที่มีอยู่:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
ข้อความ "บางภาษา" เป็นอาร์กิวเมนต์ ที่ไม่ถูกต้อง ของฟังก์ชัน IIf ด้านในสุด เนื่องจากแต่ละฟังก์ชัน IIf ที่ซ้อนกันเป็นอาร์กิวเมนต์ ที่ไม่ถูกต้อง ของฟังก์ชัน IIf ที่มีฟังก์ชันอยู่ ข้อความ "บางภาษาอื่น" จะถูกส่งกลับก็ต่อเมื่ออาร์กิวเมนต์ expr ของฟังก์ชัน IIf ทั้งหมดประเมินเป็น False เท่านั้น
ตัวอย่างเช่น สมมติว่าคุณทํางานที่ไลบรารี ฐานข้อมูลไลบรารีมีตารางที่ชื่อ ว่า เช็คเอาท์ ที่มีเขตข้อมูลชื่อว่า วันครบกําหนด ซึ่งมีวันที่ที่หนังสือเล่มนั้นครบกําหนดส่ง คุณสามารถสร้างฟอร์มที่ระบุสถานะของรายการที่ถูกเช็คเอาท์ในตัวควบคุมได้โดยใช้ฟังก์ชัน IIf ในคุณสมบัติ แหล่งตัวควบคุม ของตัวควบคุมนั้น ดังนี้
=IIf([วันครบกําหนด]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
เมื่อคุณเปิดฟอร์มในมุมมองฟอร์ม ตัวควบคุมจะแสดง "OVERDUE" ถ้าค่าของวันครบกําหนดน้อยกว่าวันที่ปัจจุบัน "ครบกําหนดวันนี้" ถ้าเท่ากับวันที่ปัจจุบัน และ "ยังไม่ถึงกําหนด" มิฉะนั้น
หมายเหตุ: เมื่อต้องการใช้ตัวดําเนินการทางตรรกะ เช่น "And" หรือ "Or" ในอาร์กิวเมนต์ expr ของฟังก์ชัน IIf คุณต้องใส่นิพจน์ตรรกะในฟังก์ชัน Eval ดูตารางตัวอย่างที่ตามมา
ใช้ IIf ในคิวรี
ฟังก์ชัน IIf มักใช้ในการสร้างเขตข้อมูลจากการคํานวณในคิวรี ไวยากรณ์จะเหมือนกัน โดยมีข้อยกเว้นที่ในคิวรี คุณต้องนําหน้านิพจน์ด้วยนามแฝงของเขตข้อมูลและเครื่องหมายจุดคู่ (:) แทนเครื่องหมายเท่ากับ (=) เมื่อต้องการใช้ตัวอย่างก่อนหน้า คุณต้องพิมพ์ดังต่อไปนี้ในแถว เขตข้อมูล ของตารางออกแบบคิวรี:
ภาษา: IIf([CountryRegion]="Italy", "Italian", "Some other language")
ในกรณีนี้ "Language:" คือนามแฝงของเขตข้อมูล
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคิวรีและเขตข้อมูลจากการคํานวณ ให้ดูบทความ สร้างคิวรีแบบใช้เลือกข้อมูลอย่างง่าย
ใช้ IIf ในโค้ด VBA
หมายเหตุ: ตัวอย่างต่อไปนี้จะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทํางานกับ VBA ให้เลือก การอ้างอิงสําหรับนักพัฒนา ในรายการดรอปดาวน์ที่อยู่ถัดจาก Search แล้วใส่คําอย่างน้อยหนึ่งคําในกล่องค้นหา
ตัวอย่างนี้ใช้ฟังก์ชัน IIf เพื่อประเมินพารามิเตอร์ TestMe ของกระบวนงาน CheckIt และส่งกลับคําว่า "Large" ถ้าจํานวนมากกว่า 1000 มิฉะนั้น จะส่งกลับคําว่า "Small"
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
ตัวอย่างเพิ่มเติม
Expression |
ผลลัพธ์ |
=IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other"))) |
หาก [AirportCode] เป็น "ORD" ให้ส่งคืน "ชิคาโก" มิฉะนั้น หาก [AirportCode] เป็น "ATL" ให้ส่งคืน "Atlanta" มิฉะนั้น หาก [AirportCode] เป็น "SEA" ให้ส่งคืน "ซีแอตเทิล" หรือส่งคืน "อื่นๆ" |
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")) |
ถ้า [ShipDate] ก่อนวันที่ของวันนี้ ให้ส่งคืน "จัดส่งแล้ว" มิฉะนั้น หาก [ShipDate] เท่ากับวันที่ของวันนี้ ให้ส่งคืน "จัดส่งวันนี้" มิเช่นนั้นให้ส่งคืน "Unshipped" |
=IIf([PurchaseDate]<#1/1/2008#,"Old","New") |
หาก [PurchaseDate] ก่อนวันที่ 1/1/2008 ให้ส่งคืน "Old" หรือส่งคืน "ใหม่" |
=IIf(Eval([Volts] ระหว่าง 12 และ 15 และ [amps] ระหว่าง 0.25 และ 0.3),"OK","ออกจากการปรับเทียบ") |
ถ้า [Volts] อยู่ระหว่าง 12 และ 15 และ [Amps] อยู่ระหว่าง 0.25 และ 0.3 ให้ส่งกลับ "ตกลง" มิเช่นนั้น ให้แสดง "ไม่อยู่ในการปรับเทียบ" |
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"อเมริกาเหนือ","อื่นๆ") |
ถ้า [CountryRegion] เป็น "Canada", "USA" หรือ "Mexico" ให้ส่งกลับ "อเมริกาเหนือ" หรือส่งคืน "อื่นๆ" |
=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(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))