Chia sẻ
"Hướng dẫn hàm CHOOSE, SWITCH, IFS trong Excel: viết công thức phân nhánh gọn gàng thay vì Nested IF lồng nhau phức tạp — dễ đọc, dễ bảo trì."
1. Vấn đề với Nested IF
=IF(A1="A", "Xuất sắc", IF(A1="B", "Tốt", IF(A1="C", "Khá", IF(A1="D", "Trung bình", "Yếu"))))Nested IF hoạt động nhưng CỰC KỲ KHÓ ĐỌC:
4 mức lồng → 4 dấu ngoặc đóng cuối
Thêm 1 case → phải sửa giữa chuỗi IF
Debug → đếm ngoặc mệt mỏi
Excel cung cấp 3 hàm thay thế: IFS, SWITCH, CHOOSE.
2. IFS — Nhiều điều kiện
=IFS(condition1, value1, condition2, value2, ..., TRUE, default)2.1. Ví dụ: Xếp loại điểm
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C", B2>=60, "D", TRUE, "F")2.2. So sánh với Nested IF
Nested IF | IFS |
|---|---|
|
|
IFS ngắn hơn, dễ đọc hơn, DỄ THÊM case mới.
2.3. Default value
TRUE, "F" → TRUE luôn đúng → đây là default/else case.
QUAN TRỌNG: Luôn thêm TRUE, default cuối cùng, nếu không → #N/A khi không match.
2.4. Khi nào dùng IFS
Điều kiện KHÁC NHAU (không phải so sánh 1 giá trị)
Cần kiểm tra phạm vi: >=90, >=80, >=70...
Cần logic phức tạp:
AND(A1>10, B1<20)
3. SWITCH — So sánh 1 giá trị
=SWITCH(expression, value1, result1, value2, result2, ..., default)3.1. Ví dụ: Mã phòng ban → Tên
=SWITCH(A2, "KD", "Kinh doanh", "KT", "Kế toán", "NS", "Nhân sự", "IT", "Công nghệ", "Không xác định")3.2. So sánh trực tiếp
Nested IF: =IF(A2="KD","Kinh doanh",IF(A2="KT","Kế toán",IF(A2="NS","Nhân sự","Khác")))
SWITCH: =SWITCH(A2, "KD","Kinh doanh", "KT","Kế toán", "NS","Nhân sự", "Khác")3.3. Default value
Giá trị CUỐI CÙNG không có cặp → default:
=SWITCH(A2, 1,"Mon", 2,"Tue", 3,"Wed", "Unknown")"Unknown" = default vì không có value đi kèm.
3.4. Khi nào dùng SWITCH
So sánh 1 expression với NHIỀU GIÁ TRỊ CỤ THỂ
Mapping code → text: mã phòng → tên, mã sản phẩm → tên
Thay thế VLOOKUP đơn giản (không cần bảng tra)
4. CHOOSE — Chọn theo thứ tự
=CHOOSE(index_num, value1, value2, value3, ...)index_num = 1 → value1, = 2 → value2, = 3 → value3...
4.1. Ví dụ: Số tháng → Tên tháng
=CHOOSE(MONTH(A2), "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12")4.2. Ví dụ: Ngày trong tuần
=CHOOSE(WEEKDAY(A2), "CN", "T2", "T3", "T4", "T5", "T6", "T7")4.3. CHOOSE trong VLOOKUP
Dynamic bảng tra:
=VLOOKUP(A2, CHOOSE({1,2}, B2:B100, C2:C100), 2, FALSE)CHOOSE({1,2}, ...) tạo mảng 2 cột ẢO → VLOOKUP từ trái sang phải tùy ý.
4.4. Khi nào dùng CHOOSE
Index là SỐ THỨ TỰ: 1, 2, 3, 4...
Mapping số → text: tháng, ngày trong tuần, quý
Tạo mảng ảo cho VLOOKUP/SUMPRODUCT
5. So sánh tổng thể
Hàm | Điều kiện | Best for |
|---|---|---|
IF | 1-2 điều kiện | Đơn giản, có/không |
IFS | Nhiều điều kiện KHÁC NHAU | Phạm vi, logic phức tạp |
SWITCH | So sánh 1 giá trị | Mapping code → text |
CHOOSE | Index là số thứ tự | Tháng, thứ, danh sách cố định |
Nested IF | Nhiều mức | TRÁNH NẾU CÓ THỂ |
6. Kết hợp với hàm khác
6.1. IFS + AND/OR
=IFS(
AND(A2="VIP", B2>1000000), "Gold",
AND(A2="VIP", B2>500000), "Silver",
A2="VIP", "Bronze",
TRUE, "Standard"
)6.2. SWITCH + TEXT
=SWITCH(TEXT(A2,"ddd"), "Mon","Thứ 2", "Tue","Thứ 3", "Wed","Thứ 4", "Thu","Thứ 5", "Fri","Thứ 6", "Sat","Thứ 7", "Sun","Chủ nhật")6.3. CHOOSE + SUMPRODUCT
=SUMPRODUCT(CHOOSE(MONTH(A2:A100), 0,0,0,1,1,1,0,0,0,0,0,0) * B2:B100)Tổng doanh số chỉ Q2 (tháng 4,5,6) → CHOOSE trả 1 cho tháng 4,5,6, 0 cho còn lại.
7. LET — Đặt tên biến trong công thức
=LET(
score, B2,
IFS(score>=90, "A", score>=80, "B", score>=70, "C", score>=60, "D", TRUE, "F")
)LET kết hợp IFS/SWITCH → công thức phức tạp nhưng DỄ ĐỌC.
8. Mẹo phân nhánh
< 3 điều kiện: dùng IF:
=IF(A1>0, "Có", "Không")So sánh giá trị cụ thể: dùng SWITCH: mapping code
Phạm vi/logic: dùng IFS: score ranges
Index số: dùng CHOOSE: tháng, thứ
Luôn có default:
TRUE, "default"trong IFS, giá trị cuối trong SWITCH
9. Tổng kết
IFS, SWITCH, CHOOSE là BỘ BA thay thế Nested IF. IFS cho điều kiện phức tạp, SWITCH cho mapping exact value, CHOOSE cho index số. Kết quả: công thức ngắn hơn, dễ đọc hơn, dễ bảo trì hơn. Bỏ Nested IF lồng 7 tầng — chuyển sang IFS/SWITCH chỉ 1 dòng.
Bình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
