WPS表格递归有问题

如图, 要求是要根据A列的子目号分别返回其父级的子目,直到长度为3的根目为止.

因子目级数不固定, 所以用递归每次返回"-"之前的文本, 直到文本长度为3为止.

公式如下:

=LET(f,LAMBDA(f,t,IF(LEN(t)<=3,t,HSTACK(f(f,TEXTBEFORE(t,"-",-1)),t))),IFNA(REDUCE({"根目","子目"},A2:A5,LAMBDA(x,y,VSTACK(x,f(f,y)))),""))

如下图, 在Excel中运行正常

在Wps中刚打开时显示正常,但重新运算后(点号或按F9)结果异常:如下图

改成下面的形式也不行

=LET(f,LAMBDA(t,IF(LEN(t)<=3,t,HSTACK(f(TEXTBEFORE(t,"-",-1)),t))),IFNA(REDUCE({"根目","子目"},A2:A5,LAMBDA(x,y,VSTACK(x,f(y)))),""))

河南省
浏览 486
收藏
4
分享
4 +1
5
+1
全部评论 5
 
都英涛
=LET(nn,CHOOSECOLS(OFFSET(U2,0,0,COUNTA(U:U)-1,3),1),oo,CHOOSECOLS(OFFSET(U2,0,0,COUNTA(U:U)-1,3),2),f,LAMBDA(f,Z,DROP(REDUCE(0,Z,LAMBDA(x,y,IFNA(VSTACK(x,IF(OR(nn=y),IFNA(HSTACK(y,f(f,FILTER(oo,nn=y))),y),y)),""))),1)),a,f(f,nn),u,GROUPBY(a,a,SUM,0,0),t,DROP(u,,-COLUMNS(u)/2),t) 函数excel 正常,wps 出错
· 山东省
回复
 
WPS社区小助理
WPS社区小助理

@金山办公

您好,这边反馈确认下呢~
· 广东省
回复
 
农家的牛
估计编译器有所不同吧
· 福建省
回复
 
离夏
打卡
· 山东省
回复
 
wils
wils

创作者俱乐部成员

不知道为啥,把递归函数放到reduce里面就正常,在外面定义就出错 =IFNA(REDUCE({"根目","子目"},A2:A5,LAMBDA(x,y,VSTACK(x,LET(f,LAMBDA(t,IF(LEN(t)<=3,t,HSTACK(f(TEXTBEFORE(t,"-",-1)),t))),f(y))))),"")
· 广东省
回复