如何用Excel公式批量生成基于Model与Quantity的序列号?
批量生成对应型号的序列号(Excel公式实现)
当然可以!不用手动下拉到天荒地老,不管数量多大,用Excel公式就能一键搞定。我分两种情况给你讲,适配不同的Excel版本:
一、Excel 365/2021(支持动态数组,推荐!)
如果你的Excel是新版的,那操作超简单,一个动态数组公式就能自动溢出所有序列号,根本不用下拉。
假设你的型号在A列(比如A2开始是型号),数量在B列(B2对应A2的数量),在任意空白单元格(比如C2)输入这个公式:
=TOCOL(A2:A4 & "-" & SEQUENCE(1,B2:B4),,TRUE)
(注意把A2:A4改成你实际的型号数据范围,比如A2:A100)
公式拆解:
SEQUENCE(1,B2:B4):针对每个型号的数量,生成从1到对应数量的序号序列(比如B2是5,就生成{1,2,3,4,5})A2:A4 & "-" & SEQUENCE(...):把型号和对应的序号拼接成完整的序列号(比如X100-1、X100-2...)TOCOL(..., ,TRUE):把所有型号的序列号序列合并成一列,并且自动忽略空行或错误值
输入完公式后,Excel会自动把所有需要的序列号填充到下方单元格,完全不用手动操作!
二、旧版Excel(不支持动态数组,比如2019及更早)
如果你的Excel版本比较旧,没有动态数组功能,那就用数组公式来实现。同样假设型号在A2:A100,数量在B2:B100,在C2单元格输入以下公式,然后按Ctrl+Shift+Enter(不是普通回车,这是数组公式的输入方式),之后下拉单元格直到出现空值:
=IFERROR(INDEX($A$2:$A$100,SMALL(IF($B$2:$B$100>=ROW(INDIRECT("1:"&MAX($B$2:$B$100))),ROW($A$2:$A$100)-ROW($A$2)+1),ROW(A1))) & "-" & COUNTIF($C$1:C1,INDEX($A$2:$A$100,SMALL(IF($B$2:$B$100>=ROW(INDIRECT("1:"&MAX($B$2:$B$100))),ROW($A$2:$A$100)-ROW($A$2)+1),ROW(A1)))&"*")+1,"")
公式逻辑:
- 用
IF($B$2:$B$100>=ROW(...))判断每个型号需要生成多少个序列号,标记对应的行号 SMALL(...,ROW(A1))按顺序提取每个需要生成序列号的型号COUNTIF(...)统计当前型号在前面已经出现的次数,加1就是当前的序号IFERROR(...)确保当所有序列号生成完后,后续单元格显示空值,不会出现错误
举个实际例子:
如果A2=X100,B2=5;A3=Y200,B3=3,那么生成的结果就是:
- C2: X100-1
- C3: X100-2
- C4: X100-3
- C5: X100-4
- C6: X100-5
- C7: Y200-1
- C8: Y200-2
- C9: Y200-3
这样不管你的数量是几十还是几百,都能一次性生成所有序列号,再也不用手动下拉啦!
内容的提问来源于stack exchange,提问作者LOTR94
相关产品推荐
相关产品推荐

