Google Sheets:按指定次数重复行并生成对应递增序列需求
在Google Sheets中按指定次数重复数据并生成递增序列
假设你的原始数据在A列(建筑编号)和B列(对应入口数量),表头分别是Building #和QTY of Entrances,可以用以下数组公式直接生成目标结果:
=ARRAYFORMULA( LET( data, FILTER(A2:B, A2:A<>""), buildings, INDEX(data,,1), counts, INDEX(data,,2), HSTACK( FLATTEN(MAP(buildings, counts, LAMBDA(b, c, IF(c>0, TRANSPOSE(SEQUENCE(c, 1, b)), "")))), FLATTEN(MAP(counts, LAMBDA(c, IF(c>0, SEQUENCE(c), "")))) ) ) )
公式说明
LET定义变量简化结构,先通过FILTER筛选出非空的数据行,避免处理无效空值- 第一个
MAP函数:对每个建筑编号,生成重复对应次数的数组(比如编号2对应4次,就生成[2,2,2,2]) - 第二个
MAP函数:对每个入口数量,生成从1到该数量的递增序列(比如数量4对应[1,2,3,4]) FLATTEN将所有子数组合并成单列,HSTACK把两列结果横向拼接,得到最终的建筑编号+入口编号组合
使用步骤
- 在空白列(比如D列)输入表头
Building #,E列输入Entrance # - 在D2单元格粘贴上述公式,回车后会自动填充所有符合要求的结果,且支持自动适配原始数据的行数变化
如果不需要处理空行的兼容,也可以用更简洁的版本:
=ARRAYFORMULA(HSTACK( FLATTEN(MAP(A2:A,B2:B,LAMBDA(b,c,IF(c="",,TRANSPOSE(SEQUENCE(c,1,b)))))), FLATTEN(MAP(B2:B,LAMBDA(c,IF(c="",,SEQUENCE(c))))) ))
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

