分享

365新函数:用REDUCE获取数据所有组合

 hercules028 2022-11-12 发布于四川

如下图,A:D列是长度不同的几组数据,要求生成F列的结果(不同列数据用横线隔开)。比如,A要和上、中、下分别组合,“A-上”要跟1、2、3、4、5分别组合,“A-上-1”要和甲、乙、丙分别组合。这个功能可以使用REDUCE函数来轻松实现。

图片

在F1单元格输入以下公式,回车:

=REDUCE(A1:A4,B1:D1,LAMBDA(x,y,TOCOL(x&'-'&TOROW(OFFSET(y,,,99),1))))

图片

简单分解一下公式的运算过程:

REDUCE函数的第一参数是A1:A4单元格区域,也即初始的x为四行一列的数组。第二参数是B1:D1单元格区域,在循环时会逐个循环B1、C1、D1这3个单元格,我们先来看循环B1时候的情况。为了方便演示,我们把第二参数直接改成B1,也就是只循环一次。

图片

第一步,来看OFFSET函数产生的结果:

图片

这里的y代表的就是B1单元格,OFFSET函数从B1单元格开始往下取99个单元的区域,也即B1:B99单元格区域。

第二步,TOROW函数将B1:B99单元格区域转化成一行并且忽略空白单元格。

图片

第三步,x&'-'&第二步产生的结果,注意,此时的x是A1:A4单元格区域,是一个四行一列的数组。这样,就实现了A列每个元素和B列每个元素的全部组合。

图片

第四步,使用TOCOL函数把上一步生成的多行多列数组转化成一列,形成下一步的x。

图片

以第四步生成的结果当成REDUCE函数的新x,然后再循环到C1单元格。这样,就实现了第四步中的每个元素和C列的1、2、3、4、5每个元素都分别组合的效果,后面以此类推。

图片

作者:超人Clark 

原载:超人一筹高效办公

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多