Excel多列文本按指定次数重复生成数组的实现问题
实现多列文本按对应次数重复的Excel数组公式
你需要批量处理多列,让每列的文本按对应行的次数重复,之前的公式仅针对单列,这里给你几个可行的扩展方案:
方案1:保留列结构生成重复结果
用BYCOL遍历每一列,自动处理每列的文本和重复次数,最终按列输出结果:
=BYCOL(I18:Z19, LAMBDA(col, TOCOL(CHOOSECOLS(INDEX(col,1), SEQUENCE(INDEX(col,2),1,1,0)))))
- 把
I18:Z19替换成你实际的文本+次数范围(每列第1行是文本,第2行是重复次数) BYCOL会逐个处理每一列:INDEX(col,1)取当前列的目标文本,INDEX(col,2)取对应重复次数,再通过CHOOSECOLS+SEQUENCE生成重复数组,TOCOL将单列的重复结果转为纵向数组
方案2:合并所有重复结果为单列
如果需要把所有列的重复内容合并成一个单列,在外层套TOCOL即可:
=TOCOL(BYCOL(I18:Z19, LAMBDA(col, TOCOL(CHOOSECOLS(INDEX(col,1), SEQUENCE(INDEX(col,2),1,1,0))))))
更易维护的封装版(用LET)
如果要方便修改数据范围,用LET封装变量,可读性更强:
=LET( 数据范围, I18:Z19, BYCOL(数据范围, LAMBDA(当前列, LET( 文本值, INDEX(当前列, 1), 重复次数, INDEX(当前列, 2), TOCOL(CHOOSECOLS(文本值, SEQUENCE(重复次数, 1, 1, 0))) ) )) )
之前公式仅支持单列的原因
你之前的公式直接指定了I18(单个单元格)和I19(单个单元格),缺少遍历多列的逻辑,而BYCOL刚好能补上这个批量处理的能力,自动遍历每一列的对应数据。
内容的提问来源于stack exchange,提问作者Hunter Heaton
相关产品推荐
相关产品推荐

