如图,如何得用规则将A1单元格的ABCDE替换成B8单元格中的结果,这个问题递归函数可以解决,方法如下:
=LET(digui,LAMBDA(递归,string,old,new,IF(old="",string,递归(递归,SUBSTITUTE(string,OFFSET(old,0,),OFFSET(new,0,)),OFFSET(old,1,),OFFSET(new,1,)))),
digui(digui,A1,C1,D1))
公式思路:
使用递归函数并向下移动规则,直到规则为空时停止递归调用,得出最后的结果。
本例递归调用的主题为SUBSTITUTE(string,OFFSET(old,0,),OFFSET(new,0,)),这是简单的substitute函数,没有嵌套。
形参递减公式为:OFFSET(old,1,),OFFSET(new,1,)。取替换目标和替换值的下一行数据。
终止条件为:IF(old="",……即当被替换对象为空时停止替换。
一般的递归函数都有以上三个要素。
digui变量的两次引用是一个便利的写法,它实现了文本编程而不调用交互操作的名称管理器,我觉得既然大佬们都发明出来了,微软是不是可以考虑直接更新成简洁的样子呢,大家怎么看?还用调用名称管理器时公式用该怎么写呢,欢迎大家讨论。
评论 (0)