Chức năng lambda google sheet

Hàm LAMBDA trong Excel 365​


Chào các bạn. Mình xin giới thiệu hàm mới được đưa vào kênh phiên bản thử nghiệm của Excel 365, sẽ đưa vào Excel 365 chính thức trong tương lai gần. Hàm LAMBDA dùng để xây dựng hàm tự tạo [UDF] bằng công thức, qua đó rút ngắn công thức phức tạp sử dụng nhiều lần.
Cú pháp.

Mã. Sao chép.

=LAMBDA[[parameter1, parameter2, …,] calculation]

Các tham số tham số1, 2. là tùy chọn, có thể đến 253 tham số, phép tính là biểu thức cần tính toán [thân hàm tự tạo]. Có thể nhập công thức này trên trang tính nhưng đơn giản nhất là tạo Tên. nhấn Ctrl-Alt-F3 để tạo tên mới, đặt tên hàm vào ô Tên, chọn phạm vi, nhận xét [bình luận này sẽ được hướng dẫn khi nhập công thức], nhập công thức vào tham khảo. Hàm LAMBDA cho phép gọi đệ quy mà không bị vòng tham chiếu lỗi.
- Ví dụ 1. tạo hàm Add1 có tác dụng đơn giản tăng 1 vào biến. đặt Tên=Add1, Tham khảo =LAMBDA[x,x+1]. Trên trang tính, ta nhập công thức =Add1[A1];
- Ví dụ 2 minh họa đệ quy, xây dựng hàm FIBO trả về hạng thứ n của dãy Fibonacci [F[1]=F . set name=FIBO, Tham khảo công thức điền.
=LAMBDA[n, IF[n
- Ví dụ 3. mình xây dựng hàm giải phương trình bậc 2 nhận 3 tham số a, b, c. Nếu a=0 thì hàm trả về lỗi #NUM [không rõ hàm nào trả về lỗi này không nên mình gọi hàm SQRT[-1]], nếu delta

Mã. Sao chép.

=LAMBDA[a,b,c,IF[a=0,SQRT[-1],LET[d,b*b-4*a*c,IF[dnumcri]]


Với dữ liệu của file bài #8, can can test.
K10 =SumFilterAmt[Sales[Mặt hàng],Sales[Thành tiền],1,L8]
With L8 is tham số lọc giá trị



Nếu muốn rộng hơn, lọc lớn hơn hay nhỏ hơn tuỳ ý, thì thêm 1 đối số:


Mã. Sao chép.

SumFilterAmt =LAMBDA[a,num,c,numcri,cri,FILTER[SumSort[a,num,c],
IF[cri=">",INDEX[SumSort[a,num,c],,2]>numcri,INDEX[SumSort[a,num,c],,2] thì gọn hơn nữa: Chỉ cần sửa K8 và/ hoặc L8 là công thức chạy lại

 

Hàm Lambda lồng và đệ quy

Giả sử có bảng dữ liệu theo cột như sau.



Giờ ta muốn.
1. Lấy dữ liệu theo tháng [có thể sử dụng let hoặc Index], ở đây tôi viết Index nhưng lồng vào Lambda

Mã. Sao chép.

GetColData =LAMBDA[dta,cn,mth,CHOOSE[{1,2},INDEX[dta,,cn],INDEX[dta,,mth+2]]]




2. Chuyển dữ liệu thành hàng dọc, muốn lấy nhiều tháng tùy ý
2. 1. Bước 1.
Viết hàm lấy dữ liệu 1 tháng bất kỳ có 1 cột thông số tháng đó

Mã. Sao chép.

GetMthData =LAMBDA[dta,mths,mth,CHOOSE[{1,2,3},INDEX[dta,,2],
INDEX[mths,1,mth],INDEX[dta,,mth+2]]]




2. 2. Bước 2.
Viết hàm nối 2 bảng cùng cấu trúc [3 cột] [hàm Append2]

Mã. Sao chép.

Append2 =LAMBDA[data1,data2,IF[SEQUENCE[ROWS[data1]+ROWS[data2]] 2: Dùng hàm bước 2, nối Append của n-1, và hàm GetMthData của tháng n

Mã. Sao chép.

________số 8


Kết quả: Giống như dùng power query - Unpivot, nhưng thuận tiện hơn là muốn lấy bao nhiêu cột cũng được [từ 2 đến 12]

 

Chủ Đề