如何用Excel函数实现按原列数值生成合并列并扩展行?
实现Excel项目名称按序号总数扩展为多行的函数方法
方法一:适用于Excel 365/2021(支持动态数组)
直接在C2单元格输入以下公式,公式会自动向下填充所有结果:
=REDUCE("", A2:A10, LAMBDA(x, y, VSTACK(x, y&SEQUENCE(INDEX(B:B, MATCH(y, A:A, 0))))))
公式说明:
REDUCE遍历A列的每个项目名称SEQUENCE(INDEX(B:B, MATCH(y, A:A, 0)))为当前项目生成1到对应B列数值的序号序列y&序号拼接项目名称和序号VSTACK把每个项目生成的行堆叠成最终的结果列
注意:把公式里的A2:A10替换成你实际的项目名称列范围
方法二:适用于旧版Excel(无动态数组支持)
在C2单元格输入以下数组公式,输入完成后按 Ctrl+Shift+Enter 确认,然后向下拖动填充柄直到出现空值:
=IFERROR(INDEX(A:A, SMALL(IF(ROW($1:$100)<=SUM(B$2:B$10), MATCH(ROW($1:$100), SUMIF(B$2:B$10, "<="&B$2:B$10)+1, 0)), ROW(A1))) & COUNTIF(C$1:C1, INDEX(A:A, SMALL(IF(ROW($1:$100)<=SUM(B$2:B$10), MATCH(ROW($1:$100), SUMIF(B$2:B$10, "<="&B$2:B$10)+1, 0)), ROW(A1))) + 1, "")
公式说明:
SUMIF(B$2:B$10, "<="&B$2:B$10)计算每个项目的累计序号总数,确定每个项目的行范围SMALL+MATCH找到当前行对应的项目名称COUNTIF(C$1:C1, 项目名称)+1生成该项目的当前序号IFERROR处理超出范围的空值
注意:根据你的数据量调整ROW($1:$100)的上限,确保覆盖所有可能的扩展行数
内容的提问来源于stack exchange,提问作者taishi
相关产品推荐
相关产品推荐

