如何实现同一供应商同日Lot编号不变、跨日递增的生成器?
Lot编号生成器解决方案
核心问题分析
你的原公式=TEXT(COUNTIFS(INDIRECT("K$1:K"&ROW()), K2, INDIRECT("F$1:F"&ROW()), F2, INDIRECT("H$1:H"&ROW()), H2), "000")是统计同一供应商、日期、月份的记录条数,所以同一天的多条记录会生成递增编号(001、002...),不符合「同一天编号不变、跨日递增」的需求。
解决方案公式
根据你的需求(按供应商区分、每月重置、同天同编号跨日递增),分两种Excel版本给出公式:
适用于Excel 365/2021(支持动态数组)
假设:
- F列 = 供应商名称
- K列 = 交易日期(标准日期格式)
- H列 = 年月标识(用公式
=TEXT(K2,"YYYYMM")生成,确保跨年月份也能区分,比如202406、202506)
公式:
=TEXT(COUNT(UNIQUE(FILTER(K$2:K2,(F$2:F2=F2)*(H$2:H2=H2)))),"000")
适用于旧版Excel(无动态数组)
公式:
=TEXT(SUMPRODUCT(--(FREQUENCY(IF((F$2:F2=F2)*(H$2:H2=H2),DATEVALUE(K$2:K2)),DATEVALUE(K$2:K2))>0)),"000")
公式说明
(F$2:F2=F2)*(H$2:H2=H2):筛选当前行及以上,同一供应商、同一年月的记录- 统计逻辑:计算该供应商在当月内,到当前日期为止的唯一日期数量——同一天的所有记录会被算作1个,跨日则自动递增
TEXT(..., "000"):将编号格式化为三位带前导零的样式(如001、002)
注意事项
- 确保K列的日期是标准日期格式,而非文本格式
- H列的年月标识必须用
YYYYMM格式,避免跨年同月份的编号混淆 - 公式下拉填充时,引用范围会自动扩展,无需手动调整
ROW()
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

