本帖最后由 alan57 于 2023-5-6 21:44 编辑
递归公式- =LAMBDA(m,n,LET(_a,$A$2:$A$13&"-"&$B$2:$B$13,_b,DROP(REDUCE(0,m,LAMBDA(x,y,VSTACK(x,FILTER(_a,ISNUMBER(FIND(y,_a)))))),1),_c,TOCOL(TEXTSPLIT(_a,_b,,1),3),_d,UNIQUE(TEXTSPLIT(TEXTJOIN(",",,SUBSTITUTE(MAP(_b,LAMBDA(x,TEXTSPLIT(x,VSTACK($F$2,m),,1))),"-","")),,",")),IF(OR(ISNUMBER(FIND(n,_d))),m&"->"&n,TOCOL(m&"->"&TOROW(gx(_d,n))))))
复制代码 计算公式- =LET(_f,DROP(REDUCE(0,gx(F2,F3),LAMBDA(s,t,VSTACK(s,HSTACK(t,LET(_a,TEXTSPLIT(t,,"->"),_b,DROP(REDUCE(0,SEQUENCE(ROWS(_a)-1),LAMBDA(x,y,VSTACK(x,HSTACK(CHOOSEROWS(_a,y),CHOOSEROWS(_a,y+1))))),1),_c,BYROW(_b,LAMBDA(x,LET(_c1,MMULT(ISNUMBER(FIND(TAKE(x,,1),A2:B13))*1,{1;1})*MMULT(ISNUMBER(FIND(TAKE(x,,-1),A2:B13))*1,{1;1}),_c2,FILTER(C2:C13,_c1=1),TEXTJOIN(",",,SUM(_c1)=1,_c2)))),_d1,AND(TEXTBEFORE(_c,",")="TRUE"),_d,IF(ISERROR(_d1),0,HSTACK(_d1,SUM(--TEXTAFTER(_c,",")))),TAKE(_d,,-1)))))),1),TAKE(SORT(FILTER(_f,TAKE(_f,,-1)>0),2),1))
复制代码
|