Trả về một trong hai phần, tùy thuộc vào kết quả đánh giá một biểu thức.
Bạn có thể dùng IIf bất kỳ tại đâu bạn có thể dùng biểu thức. Bạn dùng IIf để xác định xem một biểu thức khác đúng hay sai. Nếu biểu thức là đúng, IIf trả về một giá trị; nếu biểu thức sai, IIf trả về một giá trị khác. Bạn xác định các giá trị mà IIf trả về.
Cú pháp
IIf ( expr ; truepart ; falsepart )
Cú pháp hàm IIf có những tham đối sau:
|
Tham đối |
Mô tả |
|---|---|
|
expr |
Bắt buộc. Biểu thức bạn muốn đánh giá. |
|
truepart |
Bắt buộc. Giá trị hoặc biểu thức được trả về nếu expr là Đúng. |
|
falsepart |
Bắt buộc. Giá trị hoặc biểu thức được trả về nếu expr là Sai. |
Chú thích
IIf luôn đánh giá cả hai truepart và falsepart, mặc dù nó chỉ trả về một trong hai phần này. Do điều này, bạn nên theo dõi các hiệu ứng phụ không mong muốn. Ví dụ, nếu các kết quả đánh giá falsepart trong một phép chia theo lỗi bằng không, một lỗi xuất hiện ngay cả khi expr là Đúng.
Ví dụ
Sử dụng IIf trên biểu mẫu hoặc báo cáo Giả sử bạn có một bảng Khách hàng chứa một trường có tên là Quốc_gia_Vùng_lãnh_thổ. Trong một biểu mẫu, bạn muốn thể hiện liệu tiếng Italy có phải là ngôn ngữ chính của liên hệ không. Bạn có thể thêm điều khiển và sử dụng IIf trong thuộc tính Nguồn Điều khiển, chẳng hạn như:
=IIf([Khu vực Quốc gia]="Ý", "Tiếng Ý", "Ngôn ngữ khác nào đó")
Khi bạn mở biểu mẫu trong dạng xem Biểu mẫu, điều khiển hiển thị "Tiếng Ý" bất kể khi nào giá trị cho Khu vực Quốc gia là Ý, và "Ngôn ngữ khác nào đó" bất kỳ khi nào Khu vực Quốc gia là bất kỳ giá trị nào khác.
Sử dụng IIf trong các biểu thức phức tạp Bạn có thể sử dụng bất kỳ biểu thức nào như bất kỳ phần nào của câu lệnh IIf . Bạn cũng có thể "lồng" biểu thức IIf để đánh giá một loạt các biểu thức biểu độc lập. Để tiếp tục với ví dụ trên, bạn có thể muốn kiểm tra một vài giá trị Quốc_gia_Vùng_lãnh_thổ khác, rồi hiển thị ngôn ngữ thích hợp phụ thuộc vào giá trị tồn tại:
=IIf([Khu vực Quốc gia]="Ý", "Tiếng Ý", IIf([Khu vực Quốc gia]="Pháp", "Tiếng Pháp", IIf([Khu vực Quốc gia]="Đức", "Tiếng Đức", "Ngôn ngữ khác nào đó")))
Văn bản "Ngôn ngữ khác nào đó" là đối số falsepart của hàm IIf trong cùng. Vì mỗi hàm IIf được lồng vào là đối số falsepart của hàm IIf có chứa nó, văn bản "Ngôn ngữ khác nào đó" chỉ được trả về nếu tất cả đối số expr của tất cả các hàm IIf đánh giá là Sai.
Ví dụ khác, giả sử bạn làm việc ở thư viện. Cơ sở dữ liệu thư viện có một bảng được đặt tên là Kiểm xuất có chứa một trường, được đặt tên là Ngày Đến hạn, có chứa ngày mà một cuốn sách cụ thể đến hạn phải trả lại. Bạn có thể tạo biểu mẫu cho biết trạng thái của mục đã kiểm xuất trong điều khiển bằng cách sử dụng hàm IIf trong thuộc tính Nguồn Điều khiển của điều khiển đó, như thế này:
=IIf([Ngày Đến hạn]<Ngày(),"QUÁ HẠN",IIf([Ngày Đến hạn]=Ngày(),"Đến hạn hôm nay","Chưa Đến hạn"))
Khi bạn mở một biểu mẫu trong dạng xem Biểu mẫu, điều khiển hiển thị "QUÁ HẠN" nếu giá trị của Ngày Đến hạn thấp hơn ngày hiện tại, "Đến hạn hôm nay" nếu nó bằng với ngày hiện tại, và "Chưa Đến hạn" nếu ngược lại.
Lưu ý: Để sử dụng các toán tử lô-gic như "And" hoặc "Or" trong tham đối expr của hàm IIf, bạn phải đặt biểu thức lô-gic trong hàm Eval. Xem bảng ví dụ sau đây.
Sử dụng IIf trong một truy vấn
Hàm IIf thường được sử dụng để tạo ra các trường được tính toán trong các truy vấn. Cú pháp cũng giống như vậy, ngoại trừ trong một truy vấn, bạn phải bắt đầu biểu thức bằng một biệt danh trường và dấu hai chấm (:) thay vì dấu bằng (=). Để sử dụng ví dụ trước đó, bạn cần nhập nội dung sau vào hàng Trường của lưới thiết kế truy vấn:
Ngôn ngữ: IIf([Khu vực Quốc gia]="Ý", "Tiếng Ý", "Ngôn ngữ khác nào đó")
Trong trường hợp này, "Ngôn ngữ:" là bí danh trường.
Để biết thêm thông tin về việc tạo truy vấn và các trường được tính toán, xem bài viết Tạo truy vấn chọn đơn giản.
Sử dụng IIf trong mã VBA
Lưu ý: Các ví dụ tiếp theo thể hiện cách sử dụng hàm này trong mô-đun Visual Basic for Applications (VBA) động. Để biết thêm thông tin về cách làm việc với VBA, chọn Tham khảo dành cho Nhà phát triển trong danh sách thả xuống cạnh Tìm kiếm, rồi nhập một hoặc nhiều từ vào hộp tìm kiếm.
Ví dụ này dùng hàm IIf để đánh giá tham số TestMe của thủ tục CheckIt và trả về từ "Lớn" nếu số tiền lớn hơn 1000; nếu không, nó trả về từ "Nhỏ".
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
Các ví dụ khác
-
Biểu thức: =IIf([Mã Sân bay]="ORD","Chicago",IIf([Mã Sân bay]="ATL","Atlanta",IIf([Mã Sân bay]="SEA","Seattle","Khác")))Kếtquả: Nếu [Mã Sân bay] là "ORD", trả về "Chicago". Nếu không, nếu [Mã Sân bay] là "ATL", trả về "Atlanta". Nếu không, nếu [Mã Sân bay] là "SEA", trả về "Seattle". Nếu không, trả về "Khác".
-
Biểu thức: =IIf([Ngày Vận chuyển]<Date(),"Đã vận chuyển",IIf([Ngày Vận chuyển]=Date(),"Vận chuyển hôm nay","Chưa vận chuyển"))Kếtquả: Nếu [Ngày Vận chuyển] trước ngày hôm nay, trả về "Đã vận chuyển". Nếu không, nếu [Ngày Vận chuyển] bằng ngày hôm nay, trả về "Vận chuyển hôm nay". Nếu không, trả về "Không được vận chuyển."
-
Biểu thức: =IIf([Ngày Mua]<#01/01/2008#,"Cũ","Mới")Kếtquả: Nếu [Ngày Mua] trước ngày 01/01/2008, trả về "Cũ". Nếu không, trả về "Mới."
-
Biểu thức: =IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0,25 And 0,3),"OK","Out of calibration")Result: Nếu [Volts] nằm giữa 12 và 15 và [Amps] nằm giữa 0,25 và 0,3, trả về "OK". Nếu không, trả về "Ngoài định cỡ."
-
Biểu thức: =IIf(Eval([Khu vực Quốc gia] In ("Canada","Hoa Kỳ","Mexico"));"Bắc Mỹ","Khác")Kếtquả: Nếu [Khu vực Quốc gia] là "Canada", "Mỹ" hoặc "Mexico", trả về "Bắc Mỹ". Nếu không, trả về "Khác".
-
Biểu thức: =IIf([Trung bình]>=90,"A",IIf([Trung bình]>=80,"B",IIf([Trung bình]>=70,"C",IIf([Trung bình]>=60,"D","F"))))Kết quả: Nếu [Trung bình] là 90 hoặc lớn hơn, trả về "A". Nếu không, nếu [Trung bình] là 80 hoặc lớn hơn, trả về "B". Nếu không, nếu [Trung bình] là 70 hoặc lớn hơn, trả về "C". Nếu không, nếu [Trung bình] là 60 hoặc lớn hơn, trả về "D". Nếu không, trả về "F".
Lưu ý: Nếu bạn đang sử dụng hàm IIf để tạo một trường được tính toán trong một truy vấn, hãy thay dấu bằng (=) bằng biệt danh trường và dấu hai chấm (:). Ví dụ: Trạng thái: IIf([Ngày_Vận_chuyển]<Date();"Đã vận chuyển";IIf([Ngày_Vận_chuyển]=Date();"Vận chuyển hôm nay";"Chưa vận chuyển"))