Chia sẻ
"Hướng dẫn hàm LET và LAMBDA trong Excel 365: đặt tên biến, tạo hàm tùy chỉnh, refactor công thức phức tạp thành code sạch và tái sử dụng."
1. Tại sao công thức Excel thường xấu?
Công thức dài → lặp lại tính toán → khó đọc → khó debug. Ví dụ:
=IF(VLOOKUP(A2,Data!A:D,4,0)>1000000,VLOOKUP(A2,Data!A:D,4,0)*0.1,VLOOKUP(A2,Data!A:D,4,0)*0.05)VLOOKUP chạy 3 LẦN cho cùng một giá trị. Chậm và khó bảo trì.
2. Hàm LET — Đặt tên biến
LET cho phép đặt tên cho giá trị trung gian bên trong công thức:
=LET(
doanh_so, VLOOKUP(A2, Data!A:D, 4, 0),
IF(doanh_so > 1000000, doanh_so * 0.1, doanh_so * 0.05)
)2.1. Cú pháp
=LET(name1, value1, [name2, value2, ...], calculation)Tham số | Ý nghĩa |
|---|---|
name1 | Tên biến (không dấu cách, không bắt đầu bằng số) |
value1 | Giá trị gán cho biến |
calculation | Biểu thức cuối cùng sử dụng các biến |
2.2. Nhiều biến
=LET(
revenue, SUMPRODUCT((B2:B100="KD")*C2:C100),
cost, SUMPRODUCT((B2:B100="KD")*D2:D100),
profit, revenue - cost,
margin, profit / revenue,
"Lợi nhuận: " & TEXT(profit, "#,##0") & " | Margin: " & TEXT(margin, "0.0%")
)4 biến: revenue → cost → profit → margin → kết quả cuối cùng.
2.3. Lợi ích LET
Performance: Tính toán trung gian 1 lần, dùng nhiều lần
Readable: Đặt tên có nghĩa thay vì công thức lồng nhau
Debugable: Đổi calculation cuối thành tên biến → xem giá trị trung gian
Scoped: Biến chỉ tồn tại trong công thức, không ô ngoài
3. Hàm LAMBDA — Tạo hàm riêng
LAMBDA tạo hàm tùy chỉnh (custom function) mà bạn có thể GỌI NHƯ HÀM EXCEL:
3.1. Bước 1: Tạo LAMBDA trong Name Manager
Formulas → Name Manager → New
Name:
TinhThue(tên hàm bạn muốn)Refers to:
=LAMBDA(thu_nhap,
LET(
muc1, MIN(thu_nhap, 5000000) * 0.05,
muc2, MAX(MIN(thu_nhap, 10000000) - 5000000, 0) * 0.1,
muc3, MAX(thu_nhap - 10000000, 0) * 0.15,
muc1 + muc2 + muc3
)
)3.2. Bước 2: Sử dụng
=TinhThue(A2)Giờ TinhThue hoạt động như hàm Excel có sẵn — nhập tên, xuất hiện trong autocomplete.
3.3. LAMBDA với nhiều tham số
=LAMBDA(gia, so_luong, chiet_khau,
gia * so_luong * (1 - chiet_khau)
)Đặt tên: TinhTien → Sử dụng: =TinhTien(500000, 10, 0.1) → 4,500,000
4. MAP — Áp dụng LAMBDA lên mảng
=MAP(array, LAMBDA(x, expression))4.1. Ví dụ: Phân loại hàng loạt
=MAP(C2:C100, LAMBDA(doanh_so,
IF(doanh_so >= 100000000, "VIP",
IF(doanh_so >= 50000000, "Gold",
IF(doanh_so >= 10000000, "Silver", "Normal")))
))Áp dụng logic phân loại lên TOÀN BỘ cột → kết quả spill ra 99 ô.
5. REDUCE — Gộp mảng thành 1 giá trị
=REDUCE(initial_value, array, LAMBDA(accumulator, current, expression))5.1. Ví dụ: Running total (tổng tích lũy)
=REDUCE(0, C2:C100, LAMBDA(acc, val, acc + val))5.2. Ví dụ: Nối text
=REDUCE("", A2:A10, LAMBDA(acc, name, acc & name & ", "))Kết quả: "An, Bình, Cường, ..." — nối tất cả tên thành 1 chuỗi.
6. SCAN — Như REDUCE nhưng trả mảng
=SCAN(0, C2:C10, LAMBDA(acc, val, acc + val))Trả mảng running total: 100, 350, 800, 1500, ...
7. BYROW và BYCOL
7.1. BYROW — Áp dụng hàm theo từng hàng
=BYROW(B2:D100, LAMBDA(row, MAX(row)))Trả giá trị lớn nhất của mỗi hàng.
7.2. BYCOL — Áp dụng hàm theo từng cột
=BYCOL(B2:D100, LAMBDA(col, AVERAGE(col)))Trả trung bình của mỗi cột.
8. MAKEARRAY — Tạo mảng từ LAMBDA
=MAKEARRAY(rows, cols, LAMBDA(r, c, expression))8.1. Ví dụ: Bảng cửu chương
=MAKEARRAY(9, 9, LAMBDA(r, c, r * c))Tạo ma trận 9×9 bảng cửu chương chỉ với 1 công thức.
9. Refactor công thức
9.1. Trước (xấu)
=IF(SUMPRODUCT((A2:A100=E2)*(B2:B100="KD")*C2:C100)/SUMPRODUCT((A2:A100=E2)*(B2:B100="KD")*1)>50000000,"VIP","Normal")9.2. Sau (dùng LET)
=LET(
filter, (A2:A100=E2) * (B2:B100="KD"),
total, SUMPRODUCT(filter * C2:C100),
count, SUMPRODUCT(filter * 1),
avg, total / count,
IF(avg > 50000000, "VIP", "Normal")
)Rõ ràng, dễ debug, tính filter 1 lần thay vì 2 lần.
10. Khi nào dùng LET vs LAMBDA?
Dùng LET khi | Dùng LAMBDA khi |
|---|---|
Tối ưu 1 công thức | Tạo hàm tái sử dụng |
Đặt tên biến trung gian | Cần truyền tham số |
Cùng biểu thức 1 ô | Dùng ở nhiều ô/sheet |
Không tạo Named Range | Định nghĩa trong Name Manager |
11. Mẹo LET & LAMBDA
Luôn dùng LET bên trong LAMBDA: LAMBDA chứa LET = code siêu sạch
Debug LET: Đổi calculation cuối thành tên biến → xem giá trị trung gian
LAMBDA recursive: LAMBDA có thể gọi chính nó → giải thuật đệ quy
MAP thay Helper Column: Thay vì tạo cột phụ → MAP áp dụng logic lên mảng
Chia sẻ LAMBDA: Export Name Manager → Import ở file khác
12. Tổng kết
LET và LAMBDA đưa Excel lên một tầm mới — từ spreadsheet thành ngôn ngữ lập trình nhẹ. LET giúp công thức sạch và nhanh, LAMBDA tạo hàm tái sử dụng chuyên nghiệp. Đây là kỹ năng PHẢI CÓ cho ai muốn viết công thức Excel ở mức chuyên gia.
📥 Tải File Demo
📥 Tải file demo: let-lambda-demo.xlsx
📎 File đính kèm bài viết — chứa đầy đủ dữ liệu mẫu
Mục lục
- 1. Tại sao công thức Excel thường xấu?
- 2. Hàm LET — Đặt tên biến
- 2.1. Cú pháp
- 2.2. Nhiều biến
- 2.3. Lợi ích LET
- 3. Hàm LAMBDA — Tạo hàm riêng
- 3.1. Bước 1: Tạo LAMBDA trong Name Manager
- 3.2. Bước 2: Sử dụng
- 3.3. LAMBDA với nhiều tham số
- 4. MAP — Áp dụng LAMBDA lên mảng
- 4.1. Ví dụ: Phân loại hàng loạt
- 5. REDUCE — Gộp mảng thành 1 giá trị
- 5.1. Ví dụ: Running total (tổng tích lũy)
- 5.2. Ví dụ: Nối text
- 6. SCAN — Như REDUCE nhưng trả mảng
- 7. BYROW và BYCOL
- 7.1. BYROW — Áp dụng hàm theo từng hàng
- 7.2. BYCOL — Áp dụng hàm theo từng cột
- 8. MAKEARRAY — Tạo mảng từ LAMBDA
- 8.1. Ví dụ: Bảng cửu chương
- 9. Refactor công thức
- 9.1. Trước (xấu)
- 9.2. Sau (dùng LET)
- 10. Khi nào dùng LET vs LAMBDA?
- 11. Mẹo LET & LAMBDA
- 12. Tổng kết
Muốn làm chủ Excel?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBì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.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
INDIRECT Và OFFSET: Tạo Tham Chiếu Động Trong Excel
INDIRECT biến text thành tham chiếu, OFFSET tạo range dịch chuyển. Tạo dependent dropdowns, dynamic charts, cross-sheet lookups một cách linh hoạt.
IF Nâng Cao: IFS, SWITCH, LAMBDA, LET — Công Thức Điều Kiện Thế Hệ Mới
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ụ.
Dynamic Array Excel: UNIQUE, SORT, FILTER, SEQUENCE — Công Thức Tràn
Hướng dẫn Dynamic Array Excel 365: UNIQUE lọc không trùng, SORT sắp xếp, FILTER lọc điều kiện, SEQUENCE tạo chuỗi số. Kết hợp tạo solutions mạnh mẽ.
