如何在Excel中根据序列数字重复对应单元格字符串组?
Excel实现按序列数字重复指定字符串组的方法
一、Excel 365/2021(动态数组版本)
直接利用动态数组函数实现一键生成结果,无需下拉填充。假设原数据在Sheet1的A1:B6(A列为重复字符串,B列为序列),在新工作表的A1单元格输入以下公式:
=REDUCE("", Sheet1!B1:B6, LAMBDA(acc, n, VSTACK(acc, INDEX(Sheet1!A1:A5, SEQUENCE(n,,6-n)))))
公式说明
SEQUENCE(n,,6-n):根据序列值n生成目标字符串的行号序列:- 当
n=5时,生成1-5,对应取A1:A5全部5个字符串 - 当
n=4时,生成2-5,对应取A2:A5最后4个字符串
- 当
REDUCE+VSTACK:将每个序列对应的字符串组垂直堆叠,最终生成完整的结果数组
如果基础字符串的数量不固定(比如不是5个),可以把公式中的6-n替换为COUNTA(Sheet1!A1:A5)-n+1,实现动态适配。
二、旧版本Excel(无动态数组)
需要通过数组公式结合下拉填充实现,步骤如下:
- 计算序列累计和(辅助列可选):在
Sheet1的C1单元格输入=B1,C2输入=C1+B2,依次下拉到C6,得到累计和{5,9,14,18,22,27} - 在新工作表的A1单元格输入以下数组公式,按
Ctrl+Shift+Enter确认,然后下拉到第27行(累计和最后一个值):
=INDEX(Sheet1!$A$1:$A$5, (5 - INDEX(Sheet1!$B$1:$B$6, MATCH(ROW(A1), Sheet1!$C$1:$C$6, 1)) + 1) + MOD(ROW(A1)-1, INDEX(Sheet1!$B$1:$B$6, MATCH(ROW(A1), Sheet1!$C$1:$C$6, 1))))
公式说明
MATCH(ROW(A1), Sheet1!$C$1:$C$6, 1):定位当前行属于第几个序列组INDEX(Sheet1!$B$1:$B$6, ...):获取当前组的序列值n(5 - n +1):计算当前组字符串的起始行号MOD(ROW(A1)-1, n):计算当前行在组内的偏移位置,最终组合得到目标字符串的行号
三、规则验证
对应原数据的序列:
- 序列值5 → 输出全部5个字符串(sc、sc_en、sc_eu、sc_dk、sc_se)
- 序列值4 → 输出最后4个字符串(sc_en、sc_eu、sc_dk、sc_se)
将所有序列对应的字符串组依次拼接,结果与期望输出完全匹配。
内容的提问来源于stack exchange,提问作者Adam G
相关产品推荐
相关产品推荐

