3

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

我目前所拥有的会产生#VALUE!错误。我基于Microsoft Excel 博客=REPLACECHARS中显示的示例,其中从单元格中删除了无效字符。

公式:

=LAMBDA(Number,NumberGroup,

AddNumbers(

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

)(L32)
4

1 回答 1

3

您当前没有使用任何递归。你只是想总结一下。如果你真的想在你的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),意思是:

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

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

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

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

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

拨打电话=Addnumbers(I32)

于 2021-01-31T08:37:11.407 回答