Tính Tổng Sản Lượng Cao Nhất Theo Ngày Liên Tiếp

Cần tính tổng theo nhân viên vào các ngày liên tiếp và giá trị lớn nhất. Giúp bạn dễ dàng kiểm tra xem mỗi nhân viên sẽ làm việc tốt nhất vào những ngày nào, nếu bạn đã có dữ liệu hàng ngày.

Ví dụ: Thomas có 1, 2, 3, 4, 5 ngày liên tiếp với tổng cộng 1790 và 8, 9, 10 là 1990. Vậy kết quả chính xác sẽ là Thomas - 1990.

Link: Onedrive
Tính tổng theo ngày liên tiếp lớn nhất

Công thức:
1.=REDUCE(B1:C1,UNIQUE(B2:B31),LAMBDA(x,v,LET(a,FILTER(A2:C31,B2:B31=v),b,TAKE(a,,1),VSTACK(x,HSTACK(v,@DROP(GROUPBY(SCAN(0,b-VSTACK(0,DROP(b,-1))>1,SUM),TAKE(a,,-1),SUM,,0,-2),,1))))))

2.=LET(nm,B2:B31,u,UNIQUE(nm),VSTACK(B1:C1,HSTACK(u,MAP(u,LAMBDA(v,LET(x,FILTER(A2:C31,nm=v),MAX(TAKE(GROUPBY(TAKE(x,,1)-SEQUENCE(ROWS(x)),TAKE(x,,-1),SUM,0,0),,-1))))))))

3.=LET(b,B2:B31,u,UNIQUE(b),VSTACK(B1:C1,HSTACK(u,VLOOKUP(u,GROUPBY(HSTACK(b,A2:A31-MAP(b,LAMBDA(x,COUNTIF(B2:x,x)))),C2:C31,SUM,,,-3),3,))))

4.=LET(a,A2:A31,b,B2:B31,c,C2:C31,d,UNIQUE(b),e,MIN(a),f,SEQUENCE(,MAX(a)-e+2,e),g,XLOOKUP(d&f,b&a,c,0),h,SCAN(0,g,LAMBDA(x,y,IF(y,x+y,0))),VSTACK(B1:C1,HSTACK(d,BYROW(h,MAX))))

5.=LET(g,GROUPBY,n,B2:B31,i,g(HSTACK(n,A2:A31-MAP(n,LAMBDA(x,SUM(N(B2:x=x))))),C2:C31,SUM,,0),VSTACK(B1:C1,g(TAKE(i,,1),DROP(i,,2),MAX,,0)))

6.O2:O5=MAX(MMULT(TRANSPOSE($A$2:$A$31)^0,$C$2:$C$31*(IFERROR(LOOKUP(IF($B$2:$B$31=E2,$A$2:$A$31),IF(ISNA(MATCH(IF($B$2:$B$31=E2,$A$2:$A$31,1/0)-1,IF($B$2:$B$31=E2,$A$2:$A$31),)),IF($B$2:$B$31=E2,$A$2:$A$31))),)=TRANSPOSE($A$2:$A$31))))

7.Python (Xem trong file)
Đăng nhận xét (0)
Mới hơn Cũ hơn