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)
