随着月份变化重置序列号

随着月份变化重置序列号

(单元格 A1)发票参考号EPS-I-S151001

(单元格 B1)发票日期 2015 年 10 月 5 日

一旦手动输入发票日期,发票参考号将自动生成。

Reference No的格式如下:EPS-I-S151001

“EPS-IS”始终都是固定字符。

前 2 位数字“15”=“年份”

接下来的 2 位数字“10”=“月份”

最后 2 位数字“01”= 从 01 开始的连续数字。

例如:

发票编号 发票日期

EPS-I-S151001 2015 年 11 月 10 日

EPS-I-S151002 2015 年 11 月 15 日

EPS-I-S151003 2015 年 11 月 30 日

最后 2 位数字将继续按顺序运行。

前 4 位数字将受月份或年份的任何变化影响。月份或年份的任何变化都将导致后 2 位数字重置为01

发票编号 发票日期

EPS-I-S151001 2015 年 11 月 10 日

EPS-I-S151002 2015 年 11 月 15 日

动力传动系统1201 22-十二月-15(新月)

EPS-I-S151202 2015 年 12 月 23 日

EPS-I-S151203 2015 年 12 月 25 日

电动助力转向系统0101 03--16 (新年/月)

EPS-I-S160102 2016 年 1 月 15 日

EPS-I-S160103 2016 年 1 月 22 日

答案1

我认为我们已经为你找到了解决方案:

在此处输入图片描述

忽略略有不同的日期格式,这只是格式化。我需要留空第一行数据,因为日期会与前一行进行比较,而 LibraOffice Calc 中该行需要为空白或日期(在 Excel 中跳过它可能有效,但我没有现成的权限来测试这一点)。另一种方法是将第 2 行中的第一个发票号硬编码。

因此,在 A3 中开始的公式将是:

=IF(ISBLANK(B3),"","EPS-I-S"&TEXT(B3,"yy")&TEXT(B3,"mm")&TEXT(IF(MONTH(B3)=MONTH(B2),VALUE(RIGHT(A2,2))+1,1),"00"))

将其复制到 A 列,直到您需要为止。单元格将保持空白,直到您在 B 列中输入日期。这就是 ISBLANK 测试在开始时所做的。您已经弄清楚了接下来的几个术语,尽管您在更新问题时将其删除了。它们提供前缀、年份和月份。

这引出了序列号。年份的变化也涉及月份的变化(假设您不会在下一张发票前经过整整一年,在这种情况下,您要担心的事情会比这个电子表格更大)。因此,如果日期与前一个日期在同一个月,它会添加1到数字中。否则它以 开头1

答案2

如果您使用“辅助列”——包含您不想显示的中间结果但用于构建您想要的值的列——这样的问题会更容易解决。对于这个问题,我将使用一个辅助列,一旦您看到它们,它的内容就一目了然。我将使用 Column G。参考您问题的先前版本,我假设您的数据从第 3 行开始,并且我假设该单元格G2为空白。

  • 设置G3=IF(TEXT(B3,"yymm")<>TEXT(B2,"yymm"), 1, G2+1)
    这表示“如果此行的发票日期 ( B3) 与上一行的日期 ( ) 有不同的年份或月份B2,则设置G31;否则,添加1到上一个值 ( G2)。 ”即,这是一个正在运行的系列,1每当有新月份时就会重置为。
  • 设置A3=IF(B3="", "", "EPS-I-S" & TEXT(B3, "yymm") & TEXT(G3, "00"))
    表示“如果此行(单元格 )上的发票日期B3为空白,则不显示任何内容。否则,使用常量字符串、列 中日期的年份和月份B以及列 中的单数G (格式化为两位数,必要时带有前导零)构建发票参考号。”

然后将公式在列中向下拖动/填充到AG想要的位置。

     

注意:一旦一切正常,您就可以隐藏辅助列。

答案3

感谢提供公式,它一直运行到序列号 100。100 之后,它从 001 重新启动 这是我的公式:=IF(ISBLANK(N6),"",F6&"-"&TEXT(O6,"yyyy")&"-"&TEXT(IF(YEAR(N6)=YEAR(N5),VALUE(RIGHT(A5,2))+1,1),"000")) 其输出为 OHSAS-2020-001 / EMS-2019-001 等,其中 OHSAS / EMS 是标准,2020/2019 是年份,001 是数字

相关内容