分享

LAMBDA连载(5)--REDUCE聚合函数实现累加迭代

 郑广学老师 2024-04-26 发布于湖北

往期推荐

LAMBDA函数长篇连载(1)Lambda概述

LAMBDA连载(2)--BYROW,BYCOL实现函数里的循环

LAMBDA连载(3)--MAKEARRAY实现函数里的双循环

LAMBDA连载(4)--Map实现函数内部的循环迭代

REDUCE:减少,缩小浓缩,聚合

函数REDUCE:通过将 LAMBDA 应用于每个值,并在累加器中返回总值,将数组减小为累积值。最终实现可伸缩性结果,不再像传统函数总是返回固定长度的结果。学过WPSJSA的这个想对容易理解,就和数组的reduce函数差不多。

注意:截止发稿时间24.4.26本函数还只能再office365中使用

相比起“减小“,将”累加器“作为这个函数的关键词其实更加直观。

=REDUCE([初始值],数组, lambda())

第一参数视为一个累加器,LAMBDA针对第二参数数组元素逐个运算,每一次的运算结果都会被累加到第一参数中,而累加后的第一参数又将再次参与下一次运算,如此往复直到运算结束。最终,累加器的值将被作为REDUCE的结果返回。

1~10的平方和

平方和即将数字平方后求和:

1*1+2*2+3*3+……+10*10=?

=REDUCE(0,A1:A10,LAMBDA(x,y,x+y*y))

REDUCE第一参数设置为0,将被传递给LAMBDA第一参数x.

REDUCE第二参数是一个数组,将被传递给LAMBDA第二参数y.

LAMBDA将针对y里面的数组元素逐个执行运算x+y*y

y中有10个元素,所以进行了10次运算,每次运算的参数变化和结果如下图。

文本叠加

上述案例中执行加法运算,每次运算结果返回累加器时也执行加法。

以下案例中用VSTACK执行数组堆叠运算,结果返回累加器时自然也执行数组堆叠。

=REDUCE("单元号",A1:A5,LAMBDA(x,y,VSTACK(x,y&"-"&B1:B3)))

累加器起始值“单元号“,后续每次运算的结果在此基础上叠加。

下图中显示出前2次运算的参数变化和结果,后续的以此类推。

当然实际使用中它的外层还可以继续套用lambda函数,然后结合定义名称使用,成为子函数后再给其他函数调用。。。 也就是reduce实现了函数结果的高级聚合能力,不再局限与系统本身提供的几个聚合函数

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多