Các hàm Excel 365

Ngày tạo 06/03/2023

 -  806 Lượt xem

Bài này mình sẽ sử dụng khối dữ liệu như hình sau.

Để tính được Sales To Date ta sẽ sử dụng công thức như sau.

=SCAN(0,$B$2:$B$25,LAMBDA(a,b,a+b))

Cú pháp của hàm SCAN như sau.

=SCAN ([initial_value], array, lambda(accumulator, value))

[Initial_value]: Đặt giá trị bắt đầu cho bộ tích lũy.

Array: Một mảng cần quét.

Lambda: MỘT LAMBDA được gọi là quét mảng.

Hàm LAMBDA có hai tham số:

Accumulator: Giá trị đã tính tổng và trả về kết quả cuối cùng.

Value: Phép tính áp dụng cho mỗi thành phần trong mảng.

Về cơ bản bạn có thể hiểu như sau.

Hàm SCAN sẽ lặp qua từng dòng trong mảng array của hàm LAMBDA.

Initial Value sẽ là giá trị khởi tạo ban đầu của hàm SCAN.

Sau đó hàm LAMBDA của chúng ta sẽ hoạt động và cộng giá trị initial_value đó với giá trị của dòng hiện tại.

Bạn có thể hiểu bằng cách xem 2 hình sau.

Trên 2 hình trên sẽ là cách hàm SCAN hoạt động.

Với cách viết như trên chúng ta đã giải quyết được bài toán Sales To Date.

Tuy nhiên nếu bạn muốn tính bài toán Sales YTD thì không chỉ xài kết quả trên được mà sẽ cần viết như sau.

=SCAN(0,$B$2:$B$25,LAMBDA(a,b,IF(MONTH(OFFSET(b,,-1))<>1,a+b,0*a+b)))

Ở đây chúng ta sử dụng thêm hàm IF kết hợp với MONTH, OFFSET.

Về cơ bản hàm OFFSET(b,,-1) sẽ hoạt động như sau.

Với b chính là giá trị vùng array của chúng ta. Cols = -1 => bạn sẽ lui sang bên tay trái 1 cột. Nghĩa là bạn đang di chuyển vị trí vùng array từ cột B sang thành cột A chứa giá trị tháng.

MONTH => trả về kết quả là tháng tương ứng trong cột A.

Tại sao ở đây ta lại viết là <> 1?

Đơn giản đó là vì khi tháng 1 là đầu năm ta sẽ tính lại YTD. Trong trường hợp bạn muốn tính với ngày đầu năm là tháng 3 chẳng hạn thì chỉ cần đổi từ <>1 sang <>3 là được.

Nếu tháng <> 1 => kết quả trả về sẽ là a + b

Nếu tháng = 1 => kết quả trả về sẽ là 0 * a + b (Bạn không quan tâm tới initial value, giá trị mà biến a đang đại diện mà chỉ cộng giá trị b vào mà thôi)

Tổng kết lại bài toán trên của chúng ta sẽ như sau.

Bạn cần lưu ý là hàm SCAN và LAMBDA chỉ có trên Office 365 và phiên bản Office trên Web.

Nếu bạn đang không sở hữu Office 365 thì bạn có thể vào office.com và thực hành bài toán này nhé.

Ngoài ra nếu bạn sử dụng các phiên bản Office cũ thì bạn có thể tham khảo thêm 2 hàm này.

Tính Sales To Date:

=SUM($B$2:B2)

Tính Sales YTD:

=SUMIFS($B$2:$B$25,$A$2:$A$25,">="&EOMONTH(A2,-MONTH(A2))+1,$A$2:$A$25,"<"&EOMONTH(A2,0)+1)

Cũng sẽ khá phức tạp hơn thay vì bạn viết công thức sử dụng hàm SCAN và LAMBDA như trên.

 
 
Gọi (028) 3514 2046