Đánh giá lequocthai.com:
Hai hàm LAMBDA và SCAN của Excel thường bị nhầm lẫn với nhau vì chúng hay xuất hiện cùng lúc trong công thức. Tuy nhiên, chúng hoàn toàn khác biệt: LAMBDA là “bộ não” định nghĩa logic, còn SCAN là “phương tiện” thực thi logic đó. Dưới đây là cách phân biệt chúng.
Các hàm LAMBDA và SCAN có sẵn cho người dùng Excel 2024 trở lên, Excel thuộc Microsoft 365, Excel cho web, hoặc các ứng dụng Excel di động và máy tính bảng mới nhất.
LAMBDA: Tạo logic tùy chỉnh
Lý do hàm LAMBDA của Excel là một cuộc cách mạng là vì nó như một trang giấy trắng. Hầu hết hàm Excel khác có mục đích cố định — SUM luôn cộng, AVERAGE luôn tính trung bình. Nhưng LAMBDA tự thân nó không “làm” gì cả cho đến khi bạn cung cấp chỉ dẫn.
Trong công thức dưới đây, LAMBDA chưa có dữ liệu để xử lý, nên nó trả về lỗi #CALC!:
=LAMBDA(a,b,a*b)

Tuy nhiên, logic của nó đã được định nghĩa: khi nhận hai giá trị (a và b), nó sẽ thực hiện phép nhân (a*b). Đây là lý do tôi gọi nó là “bộ não” — nó chứa đựng phần logic, nhưng cần một nguồn bên ngoài cung cấp dữ liệu.
Sức mạnh độc lập của LAMBDA
Bạn có thể phân biệt LAMBDA với SCAN vì nó có thể tồn tại độc lập trong Trình quản lý Tên (Name Manager). Bằng cách lưu một hàm LAMBDA và đặt tên, ví dụ “CalculateMarkup”, bạn đang tạo ra một hàm tùy chỉnh mới, hoạt động như một hàm có sẵn của Excel mà bạn có thể gọi ở bất kỳ đâu trong workbook. Ngược lại, SCAN không thể được lưu theo cách này — nó phải luôn được sử dụng bên trong một công thức khác.
SCAN: Duyệt qua dải dữ liệu
Trong khi LAMBDA là về logic, thì SCAN là về chuyển động. Nó là một hàm hỗ trợ, được thiết kế để lần lượt duyệt qua một dải ô trong khi theo dõi một tổng tích lũy hoặc một danh sách đang phát triển. Bản thân SCAN không có logic để thực hiện phép toán — nó chỉ biết cách:
- Bắt đầu từ một giá trị khởi tạo.
- Di chuyển tuần tự qua một mảng.
- Ở mỗi bước, nhờ một hàm LAMBDA cung cấp hướng dẫn.
Vì vậy, cú pháp của nó là:
=SCAN([initial_value],array,LAMBDA)
trong đó:
- initial_value là giá trị bắt đầu.
- array là mảng cần được quét.
- LAMBDA là đối số hàm cho SCAN biết phải làm gì.
Bộ đôi hoạt động như một đội
Sự nhầm lẫn giữa LAMBDA và SCAN phát sinh vì SCAN hầu như luôn là hàm chính trong thanh công thức:
=SCAN(0,T_Sales[Sales],LAMBDA(a,b,a+b))

Mặc dù sử dụng Bảng Excel cho dữ liệu nguồn là phương pháp tốt nhất, công thức SCAN phải được đặt bên ngoài bảng. Lý do là nó tạo ra một mảng tràn (spilled array), mà các Bảng không thể xử lý. Lưu ý: bạn nên để một cột trống giữa Bảng và công thức SCAN để ngăn Bảng tự động mở rộng và “nuốt” mảng kết quả khi bạn nhấn Enter.
Vì LAMBDA nằm trong ngoặc đơn của SCAN, nên dễ nghĩ chúng là một. Tuy nhiên, sự kết hợp này tạo ra một quy trình lặp trong mỗi ô:
- SCAN lấy tổng hiện tại và giá trị ô mới.
- SCAN chuyển cả hai giá trị này cho LAMBDA.
- LAMBDA thực hiện phép tính và trả kết quả về.
- SCAN ghi lại kết quả đó và chuyển sang hàng tiếp theo để lặp lại quy trình.
LAMBDA và SCAN không chỉ xử lý toán học
Để thấy rõ sự khác biệt trong tình huống thực tế, hãy xem cách chúng xử lý văn bản. Một phép cộng đơn giản có thể khiến chúng trông giống một công cụ toán học thuần túy, nhưng việc dùng chúng để xây dựng một “dấu vết” (breadcrumb trail) bằng chữ sẽ tiết lộ cách tương tác thực sự.
Giả sử bạn có một cột mã ngữ âm NATO và muốn tạo một chuỗi tích lũy trong cột C.

Bạn sẽ sử dụng công thức sau:
=SCAN("",T_NATO[Phonetic],LAMBDA(a,b,IF(b="",a,IF(a="",b,a&" - "&b))))

Trong ví dụ này, hai hàm đảm nhận vai trò riêng biệt:
- SCAN quản lý trạng thái ban đầu (chuỗi rỗng “”) và việc duyệt tuần tự qua dải mã. Nhiệm vụ của nó chỉ là xác định “vị trí” và “thời điểm”.
- LAMBDA đánh giá nội dung từng ô và đưa ra quyết định logic mà SCAN không thể làm. Đầu tiên, nó kiểm tra ô có trống không để tránh thêm dấu phân cách thừa. Nếu ô trống, nó giữ nguyên chuỗi hiện tại. Nếu ô có dữ liệu, nó quyết định nên bắt đầu chuỗi mới hay nối thêm từ mới vào chuỗi hiện có.
Kết quả là một danh sách tràn (spilled list) phát triển theo từng hàng. Điều này chứng minh SCAN là hệ thống phân phối cho mọi logic tùy chỉnh do LAMBDA định nghĩa.
LAMBDA và SCAN tạo tổng tích lũy mạnh mẽ hơn
Nhiều người tình cờ gặp bộ đôi này khi tính tổng tích lũy (running total). Trong Excel cũ, bạn có thể dùng công thức như =SUM($B$2:B2) và kéo xuống.
Vấn đề của phương pháp truyền thống là nó phụ thuộc vào tham chiếu tương đối. Nếu bạn sắp xếp dữ liệu, chèn hàng mới hoặc xóa ô giữa dải, các tham chiếu dễ bị hỏng hoặc trả về lỗi #REF!. Bằng cách kết hợp LAMBDA và SCAN, bạn tạo ra một mảng động duy nhất chỉ nằm trong một ô.
Hãy xem công thức này:
=SCAN(0,T_Inventory[Stock],LAMBDA(a,b,a+b))
Ở đây, hai hàm phân chia trách nhiệm để tránh lỗi:
- SCAN gắn phép tính vào toàn bộ dải. Vì nó là một công thức duy nhất, bạn không lo các công thức riêng lẻ bị thay đổi hoặc xóa.
- LAMBDA nắm giữ logic. Nếu cần thay đổi phép toán, bạn chỉ sửa ở một chỗ để cập nhật cả cột.

Một khi bạn hiểu LAMBDA là phần trí tuệ và SCAN là hệ thống phân phối, bạn sẽ không còn xem chúng như một khối mơ hồ duy nhất. Sự phân biệt này là chìa khóa để chuyển từ những công thức kéo xuống dễ vỡ sang các bảng tính mạnh mẽ, tự động cập nhật khi dữ liệu thay đổi.
Tuy nhiên, sự kết hợp giữa hai hàm này chỉ là một cách để xử lý mảng trong Excel hiện đại. Nếu bạn không cần tính tổng tích lũy mà chỉ muốn biến đổi từng ô trong một dải độc lập, bạn nên sử dụng hàm MAP thay thế.
Tags: Excel LAMBDA, Excel SCAN, Excel công thức động







