Menu

Hàm LET trong Excel: đặt tên cho các phần của công thức

=LET(total,SUM(B2:B6),IF(total>500,total*0.9,total)) tính tổng một lần, đặt tên là total và dùng tên đó hai lần. LET giúp công thức dài ngắn hơn, dễ đọc hơn và nhanh hơn, vì mỗi phần được đặt tên chỉ tính một lần.

Mọi bảng tính trên trang này đều trực tiếp: đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

=LET(total,SUM(B2:B6),IF(total>500,total*0.9,total)) cộng B2:B6 một lần, đặt tên kết quả là total, rồi dùng tên đó hai lần: một lần để kiểm tra và một lần để trả về. Không có LET, bạn sẽ phải viết SUM ba lần: =IF(SUM(B2:B6)>500,SUM(B2:B6)*0.9,SUM(B2:B6)).

Giảm 10% cho đơn trên 500
D2
ABCD
1OrderAmountTotal to pay
2A-101120580.5
3A-10295
4A-103210
5A-10480
6A-105140
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Tổng các đơn là 645, trên 500, nên D2 hiện 580,5. Đổi B4 thành 50 thì tổng giảm còn 485, dưới ngưỡng, nên D2 hiện 485 và không được giảm giá.

Cú pháp hàm LET

=LET(name1, value1, [name2, value2, ...], calculation)
  • Mỗi name là một từ bạn tự chọn, theo sau là value mà nó đại diện: một số, một vùng hoặc một công thức.
  • Bạn có thể khai báo tối đa 126 cặp. Một giá trị có thể dùng bất kỳ tên nào đã khai báo trước nó.
  • Đối số cuối cùng là calculation, phép tính dùng các tên đó và cho ra kết quả.

LET cần Excel 2021, Excel 2024 hoặc Microsoft 365. Trong Excel 2019 trở về trước, nó hiện #NAME?. Google Sheets có LET với cùng cú pháp.

LET với nhiều biến

Các tên giúp công thức theo từng hàng đọc như một câu văn. Ở đây mỗi hàng tính một tổng phụ và giảm 10% khi vượt quá 100:

Giảm giá theo từng dòng
D2
ABCD
1ItemPriceQtyTo pay
2Pen2.51025
3Bag403108
4Lamp35270
5Mug815108
6Desk1501135
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Chiếc túi 120 thành 108, những chiếc cốc 120 cũng thành 108, và chiếc bàn 150 thành 135; bút (25) và đèn (70) giữ nguyên. Công thức được viết ở D2 rồi kéo xuống, và subtotal mang một giá trị khác nhau ở mỗi hàng.

Một tên có thể dựa trên tên trước nó: =LET(x,2,y,x*3,x+y) gán x bằng 2, y bằng 6, và trả về 8.

Tra cứu một lần rồi dùng lại

Một phép tra cứu xuất hiện hai lần trong IF sẽ chạy hai lần. LET chỉ chạy nó một lần. Công thức này trả về giá cộng thêm 20%, hoặc một thông báo khi không có sản phẩm:

Tra cứu một lần, dùng hai lần
F2
ABCDEF
1ProductRegionPriceLook forPrice + 20%
2AppleNorth1.2Pear1.8
3PearSouth1.5KiwiNot found
4CarrotEast0.8
5BreadNorth2.4
6MilkSouth1.1
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Tìm thấy Pear, nên F2 hiện 1,8. Kiwi không có trong danh sách, XLOOKUP trả về văn bản rỗng được truyền ở đối số thứ tư, và F3 hiện Not found. Nhập Kiwi vào A4 và F3 đổi thành giá của nó cộng thêm 20%.

LET với FILTER

LET hữu ích nhất với mảng động, khi một vùng đã lọc cần dùng nhiều lần. Công thức này đặt tên cho các hàng khớp, đếm chúng và tính doanh số trung bình, tất cả trong một công thức:

Tóm tắt một khu vực
F2
ABCDEF
1NameRegionSalesRegionNorth
2AnnNorth120Summary3 reps, average 126.7
3BenSouth80
4CaraNorth200
5DanEast150
6EveSouth95
7FinnNorth60
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Với North, kết quả là "3 reps, average 126.7". Chọn South ở F1 để có "2 reps, average 87.5". INDEX(rows,0,3) lấy cột thứ ba của các hàng đã lọc. Không có LET, FILTER sẽ phải viết hai lần.

Lịch tháng với các ô trống

Lịch ở trang SEQUENCE hiển thị cả các ngày của tháng liền kề. LET đặt tên cho ngày đầu tháng và lưới ngày, rồi để trống mọi ngày nằm ngoài tháng:

Tháng 4 năm 2026, các tháng khác để trống
A2
ABCDEFG
1SunMonTueWedThuFriSat
21234
3567891011
412131415161718
519202122232425
62627282930
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đổi DATE(2026,4,1) thành DATE(2026,5,1) và lưới được vẽ lại cho tháng Năm. Vì ngày đầu tháng chỉ được đặt tên một lần, chỉ có một ngày cần sửa chứ không phải ba.

Luyện tập: phí vận chuyển với LET

Đến lượt bạn
D2
ABCD
1OrderAmountTo pay
2A-101120
3A-10295
4A-103210
5A-10480
6A-105140
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Trong D2, tính tổng các số tiền ở B2:B6. Nếu tổng dưới 800, cộng thêm 25 tiền vận chuyển; nếu không thì trả về tổng.

Quy tắc đặt tên và lỗi trong LET

Phần lớn lỗi của LET đến từ các tên:

  • Tên phải bắt đầu bằng chữ cái và không có dấu cách. unit price sẽ lỗi; hãy dùng unit_price hoặc unitPrice.
  • Tên không được trông giống địa chỉ ô. a1 và tax2026 là địa chỉ ô trong Excel (TAX là một cột), nên LET từ chối chúng với #NAME?. rate hoặc tax_2026 thì dùng được.
  • Tên phải được viết giống hệt nhau mỗi lần dùng. Gõ sai ở chỗ dùng sẽ cho #NAME?, vì Excel đi tìm một hàm hoặc vùng được đặt tên có cách viết đó.
  • Đối số cuối cùng phải là một phép tính. =LET(x,5) có tên và giá trị nhưng không có gì để trả về, nên Excel từ chối nó.
  • Tên chỉ tồn tại bên trong công thức của chính nó. Để dùng lại một phép tính ở nhiều ô, hãy lưu nó thành một LAMBDA có tên.
=LET(a1,5,a1*2)          #NAME?  (a1 is a cell address)
=LET(rate,8%,100*rate)   8

Câu hỏi thường gặp

Hàm LET trong Excel làm gì?

Hàm này đặt tên cho các giá trị bên trong một công thức. =LET(total,SUM(B2:B6),total*2) tính SUM(B2:B6) một lần, gọi nó là total và trả về total nhân 2. Các tên chỉ tồn tại bên trong công thức đó.

Làm sao dùng nhiều biến trong LET?

Thêm các cặp tên và giá trị trước phép tính cuối cùng: =LET(price,B2,qty,C2,price*qty). Một giá trị phía sau có thể dùng tên đã đặt phía trước, như =LET(x,2,y,x*3,x+y), trả về 8.

Vì sao công thức LET trả về #NAME?

Có thể Excel của bạn không có LET (hàm này cần Excel 2021 hoặc Microsoft 365), một tên bị gõ sai ở chỗ dùng, hoặc một tên không hợp lệ, ví dụ tên trông giống địa chỉ ô như a1 hay tax2026, hoặc tên bắt đầu bằng số.

LET có làm công thức Excel nhanh hơn không?

Có thể. Không có LET, một biểu thức lặp lại, như cùng một XLOOKUP viết hai lần trong IF, được tính mỗi lần nó xuất hiện. Với LET, nó chỉ được tính một lần và kết quả được dùng lại.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu