如下图,A:D列是长度不同的几组数据,要求生成F列的结果(不同列数据用横线隔开)。比如,A要和上、中、下分别组合,“A-上”要跟1、2、3、4、5分别组合,“A-上-1”要和甲、乙、丙分别组合。这个功能可以使用REDUCE函数来轻松实现。 在F1单元格输入以下公式,回车:
简单分解一下公式的运算过程: 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 原载:超人一筹高效办公 |
|
来自: hercules028 > 《excel》