Dữ liệu gồm thời gian từng sản phẩm được chạy của các bộ phận. Bạn cần sắp xếp lại các sản phẩm theo bộ phận và tháng.
Link: Onedrive
![]() |
| Thống kê sản phẩm theo bộ phận và tháng |
Công thức:
1.=LET(a,A2:A16,b,C2:D16,c,MIN(b),d,UNIQUE(EOMONTH(SEQUENCE(,MAX(b)-c+1,c),-1)+1,1),REDUCE(HSTACK(A1,TEXT(d,"mmm-y")),UNIQUE(a),LAMBDA(x,v,VSTACK(x,IFNA(REDUCE(v,d,LAMBDA(s,r,HSTACK(s,FILTER(B2:B16,(a=v)*(r>=EOMONTH(+C2:C16,-1)+1)*(r<=D2:D16),"")))),REPT(v,HSTACK(0,d)=0))))))
2.=LET(a,DROP(REDUCE(0,D2:D16,LAMBDA(x,v,VSTACK(x,CHOOSE({1,2,3},@+A16:v,@+B16:v,UNIQUE(TEXT(SEQUENCE(v-@+C16:v+1,,v,-1),"m-e")))))),1),b,SEQUENCE(ROWS(a)),c,TAKE(a,,1),d,DROP(a,,2),e,c&d,n,--("1-"&d),IFNA(IFS({1,0;0,0},A1),DROP(PIVOTBY(HSTACK(XMATCH(c,c),BYROW((e=TOROW(e))*(b>=TOROW(b)),SUM),c),HSTACK(n,TEXT(n,"mmm-yy")),INDEX(a,,2),SINGLE,,0,,0),1,2)))
3.=LET(s,C2:C16,f,D2:D16,e,EDATE(@+s,SEQUENCE(,DATEDIF(@+s,MAX(f),"m")+2,0)),REDUCE(HSTACK(A1,TEXT(e,"mmm-y")),UNIQUE(A2:A16),LAMBDA(j,y,VSTACK(j,IFNA(HSTACK(y,DROP(REDUCE("",e,LAMBDA(i,x,LET(m,FILTER(B2:D16,A2:A16=y),IFNA(HSTACK(i,FILTER(TAKE(m,,1),MAP(INDEX(m,,2),INDEX(m,,3),LAMBDA(a,b,MONTH(MEDIAN(x,a,b))=MONTH(x))),"")),"")))),,1)),y)))))
4.=LET(da,A2:D16, pj,TAKE(da,,1),mm,EOMONTH(MIN(da),SEQUENCE(,DATEDIF(MIN(da),MAX(da),"m")+1)-2)+1,f,LAMBDA(p,LET(t,REDUCE("",mm,LAMBDA(a,v,HSTACK(a,IFERROR(TOCOL(BYROW(FILTER(da,pj=p),LAMBDA(r,IFS(MEDIAN(EOMONTH(INDEX(r,3),-1)+1,INDEX(r,4),v)=v,INDEX(r,2)))),2),"")))),IFNA(HSTACK(IF(SEQUENCE(ROWS(t)),p),DROP(t,,1)),""))),REDUCE(HSTACK(A1,TEXT(mm,"mmm-yy")),UNIQUE(pj),LAMBDA(A,v,VSTACK(A,f(v)))))
5.Python (Xem trong file)
