半月动态更新工单编号公式异常求助
问题排查与修正方案
原公式核心问题
原公式通过当前日期与A11的间隔天数除以15计算周期序号,逻辑完全不符合需求:
- 仅以A11为起点计数,导致五月上半月所有日期的周期序号都是1(显示001)
- 无法处理跨月的半月周期规则,更无法实现从004开始递增的要求
修正后的公式
=MAP(A11:A26, LAMBDA(date, IF(ISNUMBER(date), LET( prefix, "ACE-" & YEAR(date) & "-", // 计算当前日期所属的年度内半月周期序号(1月上=1,1月下=2...5月上=9,以此类推) current_half_month, (MONTH(date)-1)*2 + IF(DAY(date)<=15, 1, 2), // 设定起始周期:2024年5月上半月对应的年度序号是9,对应工单编号末尾004 start_half_month, 9, start_seq, 4, // 计算当前工单的序号 seq_num, current_half_month - start_half_month + start_seq, seq, TEXT(seq_num, "000"), prefix & seq ), "" ) ))
逻辑说明
- 年度半月周期计算:通过
(MONTH(date)-1)*2 + IF(DAY(date)<=15,1,2),把每个月拆成两个周期,1-15号为当月第一个周期,16号至月末为第二个周期,生成年度内连续的周期序号。 - 起始规则匹配:2024年5月上半月对应的年度周期序号是9,用户要求该周期对应工单编号末尾004,因此用
current_half_month - start_half_month + start_seq计算当前周期的工单序号。 - 格式处理:用
TEXT(seq_num, "000")把序号格式化为三位带前导零的数字。
验证效果
- 5/1-5/15:
current_half_month=9→9-9+4=4→ 显示ACE-2024-004 - 5/16-5/31:
current_half_month=10→10-9+4=5→ 显示ACE-2024-005 - 6/1-6/15:
current_half_month=11→11-9+4=6→ 显示ACE-2024-006 - 后续每半月自动递增1,完全符合需求
内容的提问来源于stack exchange,提问作者Kolev_I_N
相关产品推荐
相关产品推荐

