再说按指定次数复制数据,不用PQ不用辅助列
作者:小窝来源:部落窝教育发布时间:2023-12-15 16:54:07点击:767
再介绍一个直接用Excel的老函数就可以实现按指定次数复制数据的方法。不用PQ ,不用辅助列!
昨日晚间听部落窝老师说帮一位学员解决按指定次数复制数据的问题,如下图。
小窝当时有点显摆,说了三种方法:用PQ、用辅助列+老函数、用辅助列+新函数。
结果老师说,用不着PQ,也用不着辅助列,一个普通公式就搞定。
太打脸了!
不过小窝也学到了,今天特意分享给大家。
公式=IFERROR(INDEX($A$2:$A$7,SMALL(IF($B$2:$B$7>=COLUMN(A:Z),ROW($B$2:$B$7)-1),ROW(A1)),),"")
说明:
如果复制次数是相同的,譬如每个姓名复制3次,那么只要能生成如“1;1;1;2;2;2;3;3;3;4;4;4;…”的每个数重复3次的序列,就可以用INDEX函数按序列依次把每个姓名复制3次。
但现在复制次数不等,如果继续用INDEX函数引用姓名,则需要生成如“1;1;1;2;2;2;2;3;3;4;4;4;4;4;4;…”的序列,序列中每个数的重复次数等于复制次数,
那如何生成这样的序列呢?
下拉填充公式“=SMALL(IF($B$2:$B$7>=COLUMN(A:Z),ROW($B$2:$B$7)-1),ROW(A1))”即可。
这里面最关键的是$B$2:$B$7>=COLUMN(A:Z)。
COLUMN(A:Z),可以生成1到26的序列{1,2,3,4,5,…26}。该序列是单行数组,1行26列。
$B$2:$B$7,是单列数组,1列 6行{3;4;2;6;2;4}。
比较运算后,根据数组运算规则(不懂的请查看文前或者文后的推荐教程《IF函数{1,0}结构原理和用法》中的数组逻辑)自动扩展数组,会生成6行26列的数组。
然后是用IF函数赋值。上方数组中的TRUE都从6行1列序列{1;2;3;4;5;6}(由ROW($B$2:$B$7)-1)生成)中取值。
最后用SMALL函数逐个提取数组中的数,得到需要的“1;1;1;2;2;2;2;3;3;4;4;4;4;4;4;…”的序列。
哎,打脸!小窝还专门做过按指定次数复制数据的教程,都没有想到利用单列和单行来比较生成需要的数组。
还是自己不够灵活啊。
为了挽回一点面子,最后送大家一个用新函数的方法:
=TEXTSPLIT(CONCAT(REPT(A2:A7&"/",B2:B7)),,"/",1)
今天的分享就到这里,欢迎点赞分享~
本文配套的练习课件请添加客服微信buluowojiaoyu索取。
做Excel高手,快速提升工作效率,部落窝教育Excel精品好课任你选择!
扫下方二维码关注公众号,可随时随地学习Excel:
相关推荐:
版权申明:
本文作者小窝;部落窝教育享有稿件专有使用权。若需转载请联系部落窝教育。