为笛卡尔积运算而生的Reduce(Excel函数集团)

为笛卡尔积运算而生的Reduce(Excel函数集团)我要是没记错,Reduce这词是减少的意思,可是当他作为Excel函数出现时,我真没看出哪里Reduce了……好吧,其实可以换种理解,缩减了嵌套(帮助里写的是“将数组缩减为累计值)。来来来,把下面不规则的A:D列的数据整成F2:K7这样一堆,函数公式要怎么写?这要搁以前,就得先把A2:A4和转

大家好,欢迎来到IT知识分享网。

我要是没记错,Reduce这词是减少的意思,可是当他作为Excel函数出现时,我真没看出哪里Reduce了……

好吧,其实可以换种理解,缩减了嵌套(帮助里写的是“将数组缩减为累计值)。

来来来,把下面不规则的A:D列的数据整成F2:K7这样一堆,函数公式要怎么写?

为笛卡尔积运算而生的Reduce(Excel函数集团)

 

这要搁以前,就得先把A2:A4和转置后的B2:B3进行连接后拉成一列,再和转置后的C2:C4进行连接后拉成一列,再和……

这还好只有四列啊,万一有40列呢?

Reduce就不用这么折腾,公式写成:

=WRAPROWS(REDUCE(A2:A4,B2:D2,LAMBDA(a,b,TOCOL(a&TOROW(OFFSET(b,,,9),1)))),6)

Reduce的基础用法是3个,哦不对,4个参数:

=REDUCE(初始值, 数组, LAMBDA(a,b,运算))

其中的a和b是Lambda自定义的名称,不叫ab叫xy或者ij……都行。

当初始值当挂一个逗号的时候,Lambda中的运算不关a什么事,否则a就是初始值;至于这个b……

就以上面这个公式为例:

Offset(b,,,9),这里的b在第一次运算的时候,是B2:D2里的B2,向下扩展9个单元格后变成这样:

为笛卡尔积运算而生的Reduce(Excel函数集团)

 

再用Torow转成一行,并且加上第二个参数1,就让空统统消失,变成了一行两列两个单元格{“A”,”B”}。如此一来,a,也就是A2:A4和他进行连接,就顺利把每种组合都弄出来了。

为笛卡尔积运算而生的Reduce(Excel函数集团)

 

ToCol的作用就是把这样一个矩阵转成一列。

到这一步,就完成了第一次运算,接下来的运算过程和上面完全相同,只不过a和b发生了变化,a变成了上述运算出来的结果,b变成了B2:D2中的第二个值C2,最后生成的结果,咳咳,我就不截图了,太长……

第三次运算,第三次运算还有啥好说的,就那么回事了。

最终的结果就是一列36行,这个结果,就是传说中的笛卡尔积。

36行有点长,所以又用了个Wraprows给折腾成了一个矩阵,方便我截图的,可以忽略。

相关视频:https://v.douyin.com/SUruKf2/ 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/34897.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信