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

标签 excel recursion excel-formula excel-lambda

我的工作表的单元格 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 - 对您的单元格/数字字符串的引用;
  • AddAll - 添加数字的总计;
  • X - 一个简单的计数器,就好像我们在用 VBA 编写函数一样;

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

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

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

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

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

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

通过 =Addnumbers(I32) 调用。

关于excel - 在 Excel 中使用 LAMBDA 递归将一组数字相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65974390/

相关文章:

javascript - 对象嵌套属性访问

javascript - 简单的递归基本情况

java - 写一个算法来找到最大值

excel - Xpath解释

vba - 当我删除一系列单元格时(K2 :K18) getting an debug message

ios - 如何使用 IOS 库将 xls 转换为 csv?

c# - 导入到 SQL Server 后显示数据库中的额外行

excel - 使用VBA从一行Excel中删除所有空格

excel - 范围内的索引匹配公式匹配

基于下拉值的Excel查找?