Chia sẻ
"Không còn nested IF 64 cấp! IFS cho nhiều điều kiện, SWITCH cho match giá trị, LET cho biến trung gian, LAMBDA cho hàm tự tạo. So sánh chi tiết và ví dụ."
1. Vấn Đề Với IF Lồng Nhau
Nested IF = ác mộng. =IF(A1>90,"A",IF(A1>80,"B",IF(A1>70,"C",IF(A1>60,"D","F")))) — khó đọc, dễ sai dấu ngoặc, tối đa 64 cấp. Excel 365 mang đến IFS, SWITCH, LET, LAMBDA — giải thay thế sạch và mạnh hơn.
Bài viết so sánh 5 cách viết công thức điều kiện: nested IF truyền thống, IFS (nhiều điều kiện), SWITCH (match giá trị), LET (biến trung gian), LAMBDA (hàm tùy chỉnh). Mỗi cách phù hợp 1 tình huống.
2. IFS — Multiple Conditions Sạch Sẽ
IFS thay thế nested IF khi có NHIỀU conditions cần kiểm tra tuần tự. Không cần ngoặc đóng cuối, dễ đọc hơn rất nhiều.
// Thay vì nested IF 5 cấp:
=IFS(
A1 >= 90, "Xuất sắc",
A1 >= 80, "Giỏi",
A1 >= 70, "Khá",
A1 >= 60, "Trung bình",
TRUE, "Yếu" // TRUE = else (default)
)
// Dễ đọc, dễ maintain, dễ thêm điều kiện mới3. SWITCH — Match Giá Trị Chính Xác
SWITCH kiểm tra 1 expression và match với danh sách value/result. Giống switch-case trong lập trình. Phù hợp khi match chính xác (không phải range).
// Map mã phòng ban → tên đầy đủ
=SWITCH(B2,
"IT", "Công nghệ thông tin",
"HR", "Nhân sự",
"FIN", "Tài chính",
"MKT", "Marketing",
"Không xác định" // Default value
)
// Kết hợp expression
=SWITCH(WEEKDAY(A2),
1, "Chủ Nhật", 2, "Thứ Hai", 3, "Thứ Ba",
4, "Thứ Tư", 5, "Thứ Năm", 6, "Thứ Sáu", 7, "Thứ Bảy"
)4. LET — Biến Trung Gian Trong Công Thức
LET cho phép đặt tên biến bên trong formula. Ưu điểm: 1) Tính biểu thức 1 lần, dùng nhiều lần (nhanh hơn). 2) Dễ đọc — đặt tên có ý nghĩa thay vì lặp công thức.
// Không dùng LET (lặp VLOOKUP 2 lần):
=IF(VLOOKUP(A1,Data,3,0)>100, VLOOKUP(A1,Data,3,0)*0.9, VLOOKUP(A1,Data,3,0))
// Dùng LET (tính 1 lần, dùng 2 lần):
=LET(
price, VLOOKUP(A1, Data, 3, 0),
IF(price > 100, price * 0.9, price)
)
// LET nhiều biến:
=LET(
rev, SUM(D2:D100),
cost, SUM(E2:E100),
profit, rev - cost,
margin, DIVIDE(profit, rev),
IF(margin > 0.2, "Healthy", "Low")
)5. LAMBDA — Tạo Hàm Tùy Chỉnh Của Riêng Bạn
LAMBDA biến formula thành hàm có thể đặt tên (Name Manager). Từ đây bạn có thể tạo custom function mà không cần VBA. LAMBDA có thể recursive — xử lý chuỗi, list, logic phức tạp.
// Tạo hàm KM_TO_MILES:
// Name Manager → KM_TO_MILES = LAMBDA(km, km * 0.621371)
// Sử dụng: =KM_TO_MILES(A2)
// Hàm TAX (tính thuế lũy tiến):
// TAX = LAMBDA(income,
// LET(tax5, MIN(income, 5000000)*0.05,
// tax10, MAX(MIN(income, 10000000)-5000000, 0)*0.1,
// tax15, MAX(income-10000000, 0)*0.15,
// tax5 + tax10 + tax15)
// )6. LAMBDA Helpers: MAP, REDUCE, SCAN
Excel 365 có thêm helper functions cho LAMBDA: MAP(array, lambda) — apply function cho mỗi phần tử. REDUCE(initial, array, lambda) — aggregate với custom logic. SCAN — running calculation. BYROW/BYCOL — apply per row/column.
7. Khi Nào Dùng Cái Nào?
Nested IF: tương thích mọi phiên bản Excel. IFS: ≥ 3 conditions dạng range (>90, >80). SWITCH: match giá trị chính xác (mã → tên). LET: formula lặp lại biểu thức phức tạp. LAMBDA: cần reuse formula nhiều nơi trong workbook.
8. Kết Luận
IF truyền thống vẫn hữu dụng cho logic đơn giản. Với 3+ conditions, chuyển sang IFS/SWITCH. Dùng LET cho formula phức tạp cần biến trung gian. LAMBDA là power tool — tạo custom functions không cần VBA. Cả 5 cách đều cần Excel 365 trừ IF/SWITCH.
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.
