Bảng dữ liệu là kế hoạch chạy máy từng ngày (gồm có ngày, tên nhân viên chạy máy, Line chạy và sản lượng).
- Tổng hợp từng ngày, với mỗi Line có những nhân viên nào.
- Tổng sản lượng theo những nhân viên đó.
- Với các Line không có nhân viên hoạt động, sẽ để trống
- Mỗi Line sẽ có cột nhân viên chạy và cột tổng sản lượng.
Link: Onedrive
![]() |
| Tổng hợp KHSX theo từng line vào mỗi ngày |
Công thức:
1.=LET(H,HSTACK,a,PIVOTBY(A2:A21,C2:C21,H(B2:B21,D2:D21),H(ARRAYTOTEXT,SUM),,0,,0),VSTACK(H(A1,TAKE(a,1,-8)&TOROW(IF({1},{""," Sum"},ROW(1:4)))),DROP(a,2)))
2.=LET(c,C2:C21,H,HSTACK,VSTACK(H(A1,TOROW(UNIQUE(c)&{""," Sum"})),DROP(PIVOTBY(A2:A21,c,H(B2:B21,D2:D21),HSTACK(ARRAYTOTEXT,SUM),,0,,0),2)))
3.=LET(a,A2:A21,c,C2:C21,r,UNIQUE(c),REDUCE(HSTACK(A1,TOROW(r&{""," Sum"})),UNIQUE(a),LAMBDA(x,i,VSTACK(x,TOROW(HSTACK(i,MAP(r,LAMBDA(r,TEXTJOIN(", ",,REPT(B2:B21,(c=r)*(a=i))))),IFERROR(1/(1/SUMIFS(D2:D21,a,i,c,r)),"")),3)))))
4.=LET(e,A2:A21,c,C2:C21,u,UNIQUE(c),y,UNIQUE(e),w,HSTACK(u,u),q,VSTACK(HSTACK(A1,TOROW(w&{""," Sum"})),HSTACK(y,MAP(SEQUENCE(ROWS(y),ROWS(u)*2),y&TOROW(w),LAMBDA(v,a,IF(ISODD(v),TEXTJOIN(", ",,
5.=LET(a,A2:A21,b,UNIQUE(a),c,C2:C21,d,TOROW(IF(SEQUENCE(2),TOROW(UNIQUE(c))),,1),e,ISODD(SEQUENCE(,COLUMNS(d))),HSTACK(b,MAKEARRAY(ROWS(b),COLUMNS(d),LAMBDA(s,v,INDEX(LET(r,IF(e,IF((a=INDEX(b,s,1))*(c=d),B2:B21,""),(a=INDEX(b,s,1))*(c=d)*D2:D21),n,BYCOL(r,SUM),IF(e,BYCOL(r,LAMBDA(x,TEXTJOIN(", ",,x))),IF(n,n,""))),v)))))
6.Python
df = xl("A1:D21",1)
s =pd.unique(df.Line)
v = lambda r,i: [', '.join((d:=df[df.Line==r][df['Date']==i]).Name),s if(s:=sum(d.Qty))>0 else '']
[['Date']+[b for a in [[r,r+' Sum'] for r in s] for b in a]]+[[i]+[b for a in [v(r,i) for r in s] for b in a] for i in np.unique(df['Date'])]
