
Hàm LAMBDA, MAP, REDUCE: Tự Tạo Hàm Riêng Trong Excel
LAMBDA cho phép bạn tự tạo một hàm riêng bằng công thức Excel, không cần viết mã VBA. Nhóm hàm lặp đi kèm gồm MAP, REDUCE, SCAN, BYROW, BYCOL và MAKEARRAY, dùng để áp một phép tính lên từng phần tử của mảng.

Phiên bản nào có nhóm hàm này?
Nhóm hàm này thuộc thế hệ mới nhất và tài liệu của Microsoft gắn nhãn Office 365 cho chúng, nghĩa là dành cho bản thuê bao. Người dùng bản mua một lần thường không có.
Kiểm tra trên máy bạn: gõ =LAMBDA(x, x*2)(5) vào ô trống. Ra số 10 nghĩa là có, báo #NAME? nghĩa là không.
Nếu bạn định mua Office vì cần nhóm hàm này, hãy nhờ kiểm tra trước trên đúng phiên bản định mua.
LAMBDA hoạt động thế nào?
=LAMBDA(tham_số_1, tham_số_2, ..., biểu_thức)
Bản thân LAMBDA viết trực tiếp trong ô thì chỉ dùng được một lần:
=LAMBDA(a, b, a*b/100)(200, 15)
Cách dùng thật sự là đặt tên cho nó qua Name Manager, sau đó gọi như một hàm bình thường.
- Vào Formulas → Name Manager → New.
- Đặt tên, ví dụ TinhChietKhau.
- Ở ô Refers to, dán công thức: =LAMBDA(gia, phantram, gia*phantram/100)
- Từ giờ trong file đó bạn gõ =TinhChietKhau(200000, 15) như một hàm có sẵn.
Đây là điểm mạnh thật sự: những công thức phức tạp mà cả phòng dùng chung giờ có tên gọi dễ hiểu, người mới không cần hiểu bên trong cũng dùng được.

Nhóm hàm lặp
MAP áp một phép tính lên từng phần tử của mảng:
=MAP(A2:A100, LAMBDA(x, x*1.1))
BYROW và BYCOL tính theo từng dòng hoặc từng cột, trả về một giá trị cho mỗi dòng hoặc cột:
=BYROW(B2:D100, LAMBDA(dong, MAX(dong)))
Lấy giá trị lớn nhất của mỗi dòng. Trước đây việc này phải viết công thức ở từng dòng rồi kéo xuống.
REDUCE gom cả mảng về một giá trị duy nhất qua nhiều bước, còn SCAN giống REDUCE nhưng giữ lại kết quả trung gian từng bước, dùng để tính lũy kế.
MAKEARRAY tạo một mảng mới với giá trị tính theo vị trí dòng và cột.
Cách làm thay thế trên bản vĩnh viễn
Thay cho LAMBDA đặt tên: dùng Name Manager để đặt tên cho công thức thường, không có tham số nhưng vẫn rút gọn được các tham chiếu hay dùng. Hoặc viết hàm tự tạo bằng VBA, cách này mạnh hơn nhưng file phải lưu dạng .xlsm và người nhận phải cho phép chạy macro, xem bật macro VBA bị chặn trong Office.
Thay cho MAP: viết công thức ở dòng đầu rồi kéo xuống. Kết quả giống hệt, chỉ là mỗi ô một công thức.
Thay cho BYROW và BYCOL: thêm một cột phụ tính cho từng dòng.
Thay cho SCAN tính lũy kế: công thức kinh điển =SUM($D$2:D2) rồi kéo xuống, vùng tự mở rộng theo từng dòng.
Các cách này chạy được trên mọi phiên bản kể cả key Office 2016. Nếu bạn cần nhóm hàm mảng động cơ bản như FILTER, UNIQUE, SORT thì bản thấp nhất có là key Office 2021, xem mảng động trong Excel.
Có nên dùng LAMBDA không?
Một lưu ý thực tế: file dùng LAMBDA mở trên máy không hỗ trợ sẽ báo lỗi ở mọi ô. Nếu file của bạn được chia sẻ rộng trong công ty mà các máy dùng phiên bản khác nhau, cách an toàn hơn là giữ công thức thường, hoặc thống nhất phiên bản trước.
Câu hỏi thường gặp
LAMBDA có thay được VBA không?
Thay được cho các hàm tính toán thuần túy. Những việc như thao tác file, tự động hóa quy trình, điều khiển ứng dụng khác thì vẫn cần VBA.
Hàm LAMBDA đặt tên có dùng được ở file khác không?
Không. Tên chỉ tồn tại trong file đã tạo. Muốn chuyển sang file khác phải sao chép lại trong Name Manager.
LAMBDA có làm file chậm không?
Với phép tính đơn giản thì gần như không. Với LAMBDA đệ quy gọi lại chính nó nhiều lần thì có thể chậm rõ rệt.
