IF lồng nhau (nested IF) là một hàm IF nằm bên trong một hàm IF khác, dùng khi có nhiều hơn hai kết quả có thể xảy ra. =IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F"))) cho điểm A với 90 trở lên, B với 80 đến 89, C với 70 đến 79, và F khi dưới 70.
| A | B | C | |
|---|---|---|---|
| 1 | Student | Score | Grade |
| 2 | Ana | 94 | A |
| 3 | Ben | 81 | B |
| 4 | Chloe | 70 | C |
| 5 | Dan | 65 | F |
| 6 | Eve | 88 | B |
| 7 | Finn | 90 | A |
Bấm vào C2 và nhìn lên thanh công thức: ba hàm IF, ba dấu đóng ngoặc ở cuối. Đổi điểm của Dan ở B5 thành 75 và loại của bạn ấy chuyển từ F sang C.
Cách đọc một hàm IF lồng nhau
Excel đọc công thức từ đầu và dừng ở phép kiểm tra đầu tiên có giá trị TRUE:
=IF(B2>=90, "A",
IF(B2>=80, "B",
IF(B2>=70, "C",
"F")))
- Điểm có từ 90 trở lên không? Nếu có thì là A, và không kiểm tra gì thêm.
- Nếu không, điểm có từ 80 trở lên không? Nếu có thì là B. Phép kiểm tra này không cần ghi "và dưới 90", vì điểm từ 90 trở lên không bao giờ đi tới đây.
- Nếu không, điểm có từ 70 trở lên không? Nếu có thì là C.
- Còn lại là F, tức value_if_false của hàm IF cuối cùng.
Mỗi hàm IF bên trong nằm ở vị trí value_if_false của hàm IF trước nó. Excel cho phép tối đa 64 cấp, nhưng một công thức có hơn bốn hoặc năm cấp đã khó kiểm tra bằng mắt. Excel chấp nhận xuống dòng bên trong công thức, nên bạn có thể trình bày một công thức dài như trên ngay trong thanh công thức: nhấn Alt+Enter (Windows) hoặc Control+Option+Return (Mac) trước mỗi hàm IF.
Vì sao thứ tự điều kiện quan trọng
Vì Excel dừng ở phép kiểm tra TRUE đầu tiên, các ngưỡng phải đi từ cao xuống thấp khi bạn dùng >=. Cột D có đúng ba phép kiểm tra đó nhưng theo thứ tự ngược lại:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Student | Score | Right order | Wrong order |
| 2 | Ana | 94 | A | C |
| 3 | Ben | 81 | B | C |
| 4 | Chloe | 70 | C | C |
| 5 | Dan | 65 | F | F |
| 6 | Eve | 88 | B | C |
Ở cột D, ai có từ 70 điểm trở lên đều nhận C: điểm 94 vượt qua phép kiểm tra đầu tiên, B2>=70, nên các phép kiểm tra B và A không bao giờ được xét tới. Nếu bạn muốn bắt đầu từ mức thấp nhất, hãy đảo toán tử: =IF(B2<70,"F",IF(B2<80,"C",IF(B2<90,"B","A"))) cho kết quả giống cột C.
IF lồng nhau với văn bản
Phép kiểm tra cũng có thể so sánh văn bản. Ở đây phí giao hàng phụ thuộc vào khu vực, và mọi khu vực không được nêu tên sẽ nhận giá trị cuối cùng:
| A | B | C | |
|---|---|---|---|
| 1 | Order | Region | Fee |
| 2 | 1001 | North | $5.00 |
| 3 | 1002 | South | $7.00 |
| 4 | 1003 | West | $9.00 |
| 5 | 1004 | East | $6.00 |
| 6 | 1005 | Islands | $9.00 |
West và Islands không khớp với phép kiểm tra nào trong ba phép, nên nhận giá trị cuối, $9.00. Khi mọi phép kiểm tra đều so cùng một ô với một giá trị cố định, như ở đây, SWITCH viết cùng quy tắc đó với mỗi khu vực chỉ một lần: =SWITCH(B2,"North",5,"South",7,"East",6,9). Xem trang SWITCH.
IF lồng nhau kết hợp AND
Hàm IF lồng nhau có thể kết hợp các cấp với AND hoặc OR khi một mức phụ thuộc vào hai ô. Nhân viên có doanh số từ 2.000 trở lên và ít nhất 3 năm làm việc nhận 10%, những người khác trên 2.000 nhận 5%, còn lại không nhận gì:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Rep | Sales | Years | Rate |
| 2 | Ana | 2400 | 4 | 10% |
| 3 | Ben | 2100 | 1 | 5% |
| 4 | Chloe | 1500 | 6 | 0% |
| 5 | Dan | 3000 | 3 | 10% |
| 6 | Eve | 900 | 2 | 0% |
Ana và Dan đủ điều kiện nhận 10%, Ben đạt doanh số nhưng chưa đủ số năm nên nhận 5%, còn Chloe và Eve nhận 0%. Ở đây thứ tự cũng quan trọng: phép kiểm tra chặt hơn phải đứng trước.
IFS: cùng kết quả mà không cần lồng
Trong Excel 2019, Excel 2021 và Microsoft 365, IFS nhận các phép kiểm tra và kết quả theo từng cặp, không có hàm IF bên trong và chỉ một dấu đóng ngoặc. TRUE ở phép kiểm tra cuối đóng vai trò "mọi trường hợp còn lại":
=IFS(B2>=90,"A",B2>=80,"B",B2>=70,"C",TRUE,"F")
Hàm đọc các điều kiện theo cùng thứ tự và dừng ở điều kiện TRUE đầu tiên, nên quy tắc về thứ tự ở trên vẫn áp dụng. Trang IFS trình bày chi tiết, kể cả lỗi #N/A hàm trả về khi không có phép kiểm tra nào khớp. Excel 2016 trở về trước không có IFS, và tệp dùng hàm này sẽ hiện #NAME? trên các bản đó.
Luyện tập: hoa hồng ba mức
| A | B | C | |
|---|---|---|---|
| 1 | Rep | Sales | Commission |
| 2 | Ana | $6,200 | |
| 3 | Ben | $2,400 | |
| 4 | Chloe | $600 |
Đến lượt bạn: Trong C2, trả 10% doanh số ở B2 khi doanh số từ 5000 trở lên, 5% khi từ 1000 trở lên, và 0 trong các trường hợp còn lại. Công thức được kéo xuống đến C4.
Bảng tra cứu thay cho nhiều hàm IF
Khi các mức là số và có nhiều hơn ba hoặc bốn mức, hãy ghi các ngưỡng vào một bảng nhỏ rồi tra cứu. Bảng được sắp xếp từ ngưỡng thấp nhất trở lên, và khớp gần đúng (TRUE ở đối số cuối) trả về hàng có ngưỡng lớn nhất không vượt quá điểm số:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Score | Grade | Min score | Grade | |
| 2 | Ana | 94 | A | 0 | F | |
| 3 | Ben | 81 | B | 70 | C | |
| 4 | Chloe | 70 | C | 80 | B | |
| 5 | Dan | 65 | F | 90 | A | |
| 6 | Eve | 88 | B |
Kết quả khớp với hàm IF lồng nhau ở đầu trang. Để dời mức B lên 85, đổi E4 thành 85: không công thức nào phải sửa, và mọi xếp loại đều cập nhật. Với XLOOKUP, phép tra cứu tương tự là =XLOOKUP(B2,$E$2:$E$5,$F$2:$F$5,,-1), trong đó -1 nghĩa là "khớp chính xác hoặc giá trị nhỏ hơn kế tiếp"; khi đó bảng không cần sắp xếp.
Thử ngay: bảng mức điểm đã sẵn sàng, bạn chỉ cần viết công thức tra cứu.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Student | Score | Grade | Min score | Grade | |
| 2 | Ana | 86 | 0 | F | ||
| 3 | 70 | C | ||||
| 4 | 80 | B | ||||
| 5 | 90 | A |
Đến lượt bạn: Trong C2, trả về xếp loại cho điểm ở B2 dựa trên bảng mức điểm ở E2:F5.
Câu hỏi thường gặp
Làm sao viết nhiều hàm IF lồng nhau trong Excel?
Đặt hàm IF tiếp theo vào đối số value_if_false của hàm IF trước đó: =IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F"))). Excel kiểm tra các điều kiện từ đầu đến cuối và dừng ở điều kiện đầu tiên có giá trị TRUE.
Excel cho phép lồng bao nhiêu hàm IF?
Tối đa 64 cấp từ Excel 2007 trở đi. Nhưng từ rất lâu trước giới hạn đó, công thức đã khó đọc và khó kiểm tra; khi có hơn ba hoặc bốn mức, một bảng tra cứu với VLOOKUP hoặc XLOOKUP khớp gần đúng sẽ dễ bảo trì hơn.
Vì sao hàm IF lồng nhau của tôi trả về sai kết quả?
Thường là do các điều kiện sai thứ tự. Với phép so sánh >=, hãy bắt đầu từ ngưỡng cao nhất: nếu B2>=70 đứng đầu, điểm 95 sẽ dừng ngay ở đó và nhận kết quả của mức 70.
Có thể dùng gì thay cho IF lồng nhau trong Excel?
IFS trong Excel 2019 trở lên (=IFS(B2>=90,"A",B2>=80,"B",TRUE,"F")), SWITCH khi bạn so một giá trị với các giá trị cố định, và bảng tra cứu với =VLOOKUP(B2,$E$2:$F$5,2,TRUE) cho các mức số.