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)))),""))

河南省
浏览 286
收藏
4
分享
4 +1
4
+1
全部评论 4
 
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))))),"")
· 广东省
回复