excel函数技巧:【递归】根据父级ID查询部门归属-趣帮office教程网

如图,ABC三列为源数据,指明了各个部门的id,名称及父级的id,要求寻找出部门所有的父级部分产用“/”连接起来,公式如下:

=LET(fx,LAMBDA(digui,x,IF(x=0,OFFSET(x,,-1),digui(digui,XLOOKUP(x,$A:$A,$C:$C))&" / "&OFFSET(x,,-1))),fx(fx,C9))

公式思路:本例仍然是一个利用递归解决问题的例子,

本例递归调用的主题为XLOOKUP(x,$A:$A,$C:$C))&" / "&OFFSET(x,,-1))),这是寻找到上一级的父级ID并返回上一级的名称。

形参递减公式为:省略,即只要xlookup找到的父级id不为空则继续查找,继续返回。

终止条件为:IF(x=0,OFFSET(x,,-1),……即当C列的父级ID为空时,停止递归,返回上一列的值。

一般的递归函数都有以上三个要素。

此例为BOM类例子,父级寻找可用循环也可以用递归完成,但递归的书写明显要简洁一些。有小伙伴知道循环怎么写呢?