在 Excel 中使用 LAMBDA 递归将一组数字相加

Add Together a Set of Numbers using LAMBDA Recursion in Excel

我的工作表的单元格 I32 (123456789) 中有一组连续的数字。我想使用新的 LAMBDA 函数通过九次迭代(使用递归)将每个数字相加。单元格 L32 中的最终值应为 45。

我现在得到的是#VALUE!错误。我基于 Microsoft Excel blog 中显示的 =REPLACECHARS 示例,其中从单元格中删除了无效字符。

公式:

=LAMBDA(Number,NumberGroup,

AddNumbers(

SUM(LEFT(Number,1)),
RIGHT(NumberGroup,LEN(NumberGroup)-1)
)

)(L32)

您目前没有使用任何递归。你只是想总结。如果您真的想在 LAMBDA() 中进行递归,请尝试类似的操作:

=LAMBDA(Input,AddAll,X,IF(X=LEN(Input)+1,AddAll,Addnumbers(Input,AddAll+MID(Input,X,1),X+1)))

我为 LAMBDA() 创建了三个参数:

  • Input - 引用您的 cell/string 个数字;
  • AddAll - 添加数字的总计;
  • X - 一个简单的计数器,就像我们在 VBA;
  • 中编写一个函数一样

如果将该函数添加到您的名称管理器中,您现在可以使用以下方式调用它:=Addnumbers(I32,0,1),意思是:

  • 调用我们命名为“AddNumbers”的 LAMBDA() 函数;
  • 第一个参数必须是对我们cell/string;
  • 的引用
  • 第二个参数是我们当前的总数,开始时为零;
  • 第三个参数是我们计数器的开始,应该是1。

我专门添加了嵌套的 IF() 来进行迭代,i.o.w。递归。 IF() 检查计数器的当前状态。只有当它大于我们输入的总长度时,它才会 return 当前总长度,否则;递归从在我们使用的第二个参数(FALSE 参数)中再次调用 LAMBDA() 开始:

  • 相同的Input值;
  • 使用 MID() 将当前索引中的一个数字添加到我们的总数中 AddAll;
  • 将我们的计数器 X 增加 1。

现在我们已经解决了递归问题,我想说如果您想使用 LAMBDA(),这里有更好的选择,因为不需要递归。尝试:

=LAMBDA(Input,SUM(--MID(Input,SEQUENCE(LEN(Input)),1)))

通过=Addnumbers(I32)调用。