Excel按指定次数,整行重复数据,3种方法你会么
如下所示,左边是数据源,其中有一列是重复次数,现在我们需要根据重复次数,生成对应数量的行,效果如下所示:
我们分别用两种方法快速生成,第一种不限制版本, 第二、三种需要最新版本的函数公式来解决
方法1:使用VLOOKUP公式
首先,需要在数据的最左边插入一列辅助列,然后在A2单元格中输入公式:
=SUM($E$1:E1)
也就是错位累加求和,然后将辅助列填充至下方一行
有了这个辅助列,我们只需要在空白的区域输入公式:
=VLOOKUP(ROW(A1)-1,A:E,{2,3,4},1)&""
然后用当前行的行号减1,去源数据里面,匹配对应的2,3,4列,进行模糊匹配
当我们查找匹配数字0的时候,得到的结果是0
向下填充就得到了所有的结果,我们看row(a2)-1,就是用数字1进行查找匹配的时候,因为模糊匹配,在两档之间的时候,取小的那一档,所以返回的仍然是0这一行的结果,依次类推,就得到了所有的结果
方法2:使用tocol公式
有的时候,源数据表不方便添加辅助列,这个时候,我们可以用最新版本的tocol函数搞定
我们输入的公式是:
=TOCOL(IF(COLUMN(1:1)<=$D$2:$D$5,A2:A5,excel),3)
它就可以得到以A2:A5单元格对应D2:D5次数重复的数据
然后我们只需要向右填充2列,就得到了我们想要的结果
其中的原理也很简单,我们只需要分步骤解读就明白了
所以是colomn(1:1),它会返回第1行的列标号,也就是1,2,3,4,5...一直到最大列号
然后我们和重复次数进行对比:=COLUMN(1:1)<=D2:D5
每行对应的次数开头就会变成TRUE,其它的就是FALSE了
然后我们使用IF函数公式, 将属于TRUE的内容变成姓名,其它的变成一个错误值
=IF(COLUMN(1:1)<=D2:D5,A2:A5,excel)
然后使用TOCOL拼接成一列,第3参数输入数字3,它会忽略错误值拼接,就得到了我们想要的结果:
为了方便向下拉,重复的数字列不变,所以对D列引用的数据源固定引用
方法3:使用REDUCE循环计算
我们输入的公式是:
=REDUCE(A1:D1,D2:D5,LAMBDA(x,y,IF(y=0,x,VSTACK(x,IF(SEQUENCE(y),OFFSET(y,,,1,-4),"")))))
第三种方式可以直接套用使用。
关于这个小技巧,你学会了么?动手试试吧!