ส่งกลับหนึ่งในสองส่วน โดยขึ้นอยู่กับการประเมินผลของนิพจน์
คุณสามารถใช้ IIf กับทุกตําแหน่งที่คุณสามารถใช้นิพจน์ได้ ใช้เพื่อ IIf ตรวจสอบว่านิพจน์อื่นเป็น จริง หรือ เท็จ ถ้านิพจน์เป็นจริง จะ IIf ส่งกลับค่าหนึ่งค่า ถ้าเป็นเท็จ จะ IIf ส่งกลับค่าอื่น คุณระบุค่าที่จะ IIf ส่งกลับ
ไวยากรณ์
IIf(expr, truepart, falsepart)
IIfไวยากรณ์ของฟังก์ชันมีอาร์กิวเมนต์ดังนี้
| อาร์กิวเมนต์ | คำอธิบาย |
|---|---|
expr |
จำเป็น นิพจน์ที่คุณต้องการประเมิน |
truepart |
จำเป็น ค่าหรือนิพจน์ที่ส่งกลับถ้าexprเป็นTrue |
falsepart |
จำเป็น ค่าหรือนิพจน์ที่ส่งกลับถ้าexprเป็นFalse |
ข้อสังเกต
IIf จะประเมินทั้ง AND truepartfalsepartเสมอ แม้ว่าจะส่งกลับเพียงค่าเดียวก็ตาม เนื่องจากลักษณะการทํางานนี้ ให้ระวังผลข้างเคียงที่ไม่พึงประสงค์ ตัวอย่างเช่น ถ้าการประเมินผลลัพธ์falsepartเป็นข้อผิดพลาดหารด้วยศูนย์ ข้อผิดพลาดจะเกิดขึ้นแม้ว่าจะexprเป็นTrue
ตัวอย่าง
ใช้ IIf บนฟอร์มหรือรายงาน
สมมติว่าคุณมีCustomersตารางที่มีเขตข้อมูลชื่อCountryRegion ในฟอร์ม คุณต้องการแสดงให้เห็นว่าภาษาอิตาลีเป็นภาษาแรกของที่ติดต่อหรือไม่ คุณสามารถเพิ่มตัวควบคุมและใช้IIfในคุณสมบัติของตัวควบคุม:Control Source
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
เมื่อคุณเปิดฟอร์มในมุมมองฟอร์ม ตัวควบคุมจะแสดงขึ้นItalianเมื่อใดก็ตามที่มีค่า for เท่ากับCountryRegionItaly ซึ่งจะแสดงเมื่อ Some other language ใดก็ตาม CountryRegion ที่มีค่าอื่นๆ
ใช้ใน IIf นิพจน์ที่ซับซ้อน
คุณสามารถใช้นิพจน์ใดๆ ในส่วนใดๆ ของ IIf คําสั่ง คุณยังสามารถซ้อน IIf นิพจน์ ซึ่งช่วยให้คุณประเมินชุดของนิพจน์ที่ไม่เป็นอิสระ เมื่อต้องการทําตัวอย่างก่อนหน้าต่อ คุณอาจต้องการทดสอบค่าที่แตกต่างกัน CountryRegion หลายค่า แล้วแสดงภาษาที่เหมาะสมโดยยึดตามค่า ดังนี้
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
ข้อความคือSome other languagefalsepartอาร์กิวเมนต์ของฟังก์ชันภายในสุดIIf เนื่องจากแต่ละฟังก์ชันซ้อนกันIIfเป็นอาร์falsepartกิวเมนต์ของIIfฟังก์ชันที่มีฟังก์ชันนั้น ข้อความSome other languageจะถูกส่งกลับก็ต่อเมื่ออาร์กิวเมนต์ทั้งหมดของexprฟังก์ชันประเมินIIfเป็นFalse
อีกตัวอย่างหนึ่ง สมมติว่าคุณทํางานที่ห้องสมุด ฐานข้อมูลไลบรารีมีตารางชื่อที่มี Check Outs เขตข้อมูลที่ชื่อว่า Due Dateซึ่งมีวันที่กําหนดส่งหนังสือเล่มหนึ่งๆ คุณสามารถสร้างฟอร์มที่แสดงสถานะของรายการที่ถูกเช็คเอาท์ในตัวควบคุมโดยใช้ฟังก์ชันใน IIf คุณสมบัติของตัวควบคุม Control Source นั้น:
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
เมื่อคุณเปิดฟอร์มในมุมมองฟอร์ม ตัวควบคุมจะแสดงถ้าOVERDUEค่าของ น้อยกว่าDue Dateวันที่ปัจจุบัน ถ้าDue todayเท่ากับวันที่ปัจจุบัน และอื่นๆNot Yet Due
หมายเหตุ
เมื่อต้องการใช้ตัวดําเนินการเชิงตรรกะ เช่น And หรือOrในexprอาร์กิวเมนต์ของIIfฟังก์ชัน คุณต้องใส่นิพจน์ตรรกะไว้ในฟังก์ชัน Eval ดูตารางตัวอย่างต่อไปนี้
ใช้ใน IIf คิวรี
IIfฟังก์ชันนี้มักจะใช้ในการสร้างเขตข้อมูลจากการคํานวณในคิวรี ไวยากรณ์จะเหมือนกัน ยกเว้นว่าในคิวรีคุณต้องนําหน้านิพจน์ด้วยนามแฝงของเขตข้อมูลและเครื่องหมายจุดคู่ (): แทนเครื่องหมายเท่ากับ ()= เมื่อต้องการใช้ตัวอย่างก่อนหน้า ให้พิมพ์ดังต่อไปนี้ในแถว เขตข้อมูล ของตารางออกแบบคิวรี:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
ในกรณีนี้ Language: คือนามแฝงของเขตข้อมูล
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคิวรีและเขตข้อมูลจากการคํานวณ ให้ดู สร้างคิวรีแบบใช้เลือกข้อมูลอย่างง่าย
ใช้ใน IIf โค้ด VBA
หมายเหตุ
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทํางานกับ VBA ให้เลือก การอ้างอิงนักพัฒนา ในรายการดรอปดาวน์ที่อยู่ถัดจาก ค้นหา แล้วใส่คําอย่างน้อยหนึ่งคําในกล่องค้นหา
ตัวอย่างนี้ใช้ฟังก์ชันเพื่อ IIf ประเมิน TestMe พารามิเตอร์ของ CheckIt กระบวนงานและส่งกลับคําถ้า Large จํานวนมากกว่า 1000 มิฉะนั้นจะส่งกลับคําว่า 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]เป็น"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เขตข้อมูลจากการคํานวณในคิวรี ให้แทนที่เครื่องหมายเท่ากับ ()= ด้วยนามแฝงของเขตข้อมูลและเครื่องหมายจุดคู่ (): ตัวอย่างเช่น Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).