本帖最后由 mykitami 于 2025-3-25 21:10 编辑
一个公式完成,好长的一个火车,出入库应该按日期的先后顺序进行才合理,所以我的公式结果与你的模拟效果不一样。
用的M365
A5公式
=LET(a,HSTACK('流水 (2)'!C3:G9999,'流水 (2)'!J3:J9999,'流水 (2)'!M3:M9999),aa,FILTER(a,(TAKE(a,,1)<>"")*(TAKE(a,,-1)<>"库存")),az,IF(aa<0,-aa,aa),az_2,INDEX(az,,1)&INDEX(az,,2),jg,DROP(REDUCE("",UNIQUE(az_2),LAMBDA(x,y,LET(b,FILTER(az,az_2=y),r,DROP(REDUCE("",{"入库";"出库"},LAMBDA(m,n,LET(c,FILTER(b,TAKE(b,,-1)=n),HSTACK(m,IF(n="入库",IFERROR(IFNA(HSTACK(TAKE(c,,2),"","","","",CHOOSECOLS(c,3,4,5,6,7)),""),EXPAND("",,11,"")),IFERROR(IFNA(HSTACK(TAKE(c,,3),TAKE(c,,-3),"","",""),""),EXPAND("",,9,""))))))),,1),VSTACK(x,r)))),1),f,LAMBDA(x,y,IF(x="",y,x)),p,IFNA(HSTACK(f(INDEX(jg,,2),INDEX(jg,,13)),INDEX(jg,,1),CHOOSECOLS(jg,SEQUENCE(,7,3)),"","",INDEX(jg,,12),CHOOSECOLS(jg,14,15),"","",""),""),p_1,TAKE(p,,1),m,LAMBDA(u,v,MAP(SEQUENCE(ROWS(p)),LAMBDA(x,SUM((TAKE(N(INDEX(p,,u)),x)-TAKE(N(INDEX(p,,v)),x))*(INDEX(p_1,x,1)=TAKE(p_1,x)))))),HSTACK(p,m(7,13),m(9,14),f(INDEX(jg,,10),INDEX(jg,,16))))
|