将日期转换为会计年度,会计期间和会计周的公式

时间:2020-02-10 02:58:11

标签: excel-formula

正在处理一个带有日期的公式,并将其转换为FYxxPxxWx格式。

例如。输入日期03/22/20,公式将为您提供正确的FY20P06W4。

但是,如果您输入02/02/20,该公式将为您提供FY20P05W2。正确的输出为FY20P05W1。这个问题的发生日期也为09/29/19。它给你FY20P12W5。正确的输出为FY20P1W1。

当您将日期设置为04/5/20时,您会得到FY21P07W2,而这应该是FY20P07W2。

公式是 =CONCATENATE("FY",RIGHT(YEAR(DATE(YEAR(D5),MONTH(D5)+(10-1),1)),2),"P",TEXT(CHOOSE(MONTH(D5),4,5,6,7,8,9,10,11,12,1,2,3),"0#"),"W",WEEKNUM(D5,1)-WEEKNUM(DATE(YEAR(D5),MONTH(D5),1),1)+1)

我认为这个问题是由月份结束的奇怪的几周引起的,另一个月份又使该公式失效。

我确实有一个公式可以计算出会计年度的开始日期

=(DATE(YEAR(TODAY())-1,10,1)-(WEEKDAY(DATE(YEAR(TODAY())-1,10,1),1)))+1

这将输出09/29/19作为会计年度的开始日期,并与会计年度的第一个月10/1/19相同。如果有道理。

单独的公式是 对于FY,仅获取年份的后两位数字 RIGHT(YEAR(DATE(YEAR(D5),MONTH(D5)+(10-1),1)),2)

期间(给我一个两位数的期间 TEXT(CHOOSE(MONTH(D5),4,5,6,7,8,9,10,11,12,1,2,3),"0#")

一周 WEEKNUM(D5,1)-WEEKNUM(DATE(YEAR(D5),MONTH(D5),1),1)+1)

1 个答案:

答案 0 :(得分:1)

我相信我有一个适合您的解决方案。后续讨论,但这是完整的公式:

=CONCAT("FY",RIGHT(YEAR(D5+91+WEEKDAY(DATE(YEAR(D5),10,1))),2),"P",TEXT(IF(MONTH(D5+(7-WEEKDAY(D5)))<>MONTH(D5),IF(MONTH(D5)=9,1,CHOOSE(MONTH(D5),5,6,7,8,9,10,11,12,1,2,3,4)),CHOOSE(MONTH(D5),4,5,6,7,8,9,10,11,12,1,2,3)),"0#"),"W",ROUNDUP(((D5-IF(MONTH(D5+(7-WEEKDAY(D5)))<>MONTH(D5),DATE(YEAR(D5),MONTH(D5)+1,1)-WEEKDAY(DATE(YEAR(D5),MONTH(D5)+1,1))+1,DATE(YEAR(D5),MONTH(D5),1)-WEEKDAY(DATE(YEAR(D5),MONTH(D5),1))+1))/7)+0.01,0))

一个问题是,这仍然会以您所说的错误方式计算出2/2/2020。但是,当我对照日历进行验证时,看来FY20P05W02应该是正确的。如果包括月初的一周开始一个新的支付期,则意味着2/1/2020(星期六)将是会计周1的最后一天。这将使2/2/2020成为第一个财政周。会计周的第二天。

要计算会计年度,我使用了RIGHT(YEAR(D5+91+WEEKDAY(DATE(YEAR(D5),10,1))),2)。由于您可以指望从十月初到十二月底总是有91天,因此此计算会有所帮助。在您的公式中,您有MONTH(D5)+(10-1),这将使您在D5的月份之后推迟9个月。这就解释了为什么您在2020年4月5日的结果会减少一年。

会计期间有点棘手,需要几个嵌套的IF语句。我先用IF(MONTH(D5+(7-WEEKDAY(D5)))<>MONTH(D5)来计算下一个会计期间的月底的天数,然后用IF(MONTH(D5)=9来计算可能在下一个会计年度里的9月底的那几天财政年度。 9月底的天数默认为1,下一财政期间包含的月底的天数将使用第一个CHOOSE函数(它们需要下个月的数字),以及所有内容否则会在您编写时获得CHOOSE函数。

财政周花费了更多时间,但最后我评估了当前财政月的开始,并将其从D5中的日期中减去,然后除以7再加上0.01,这样偶数将舍入正确起来。

我经过数年的测试,似乎功能正常,但是如果您有任何疑问,请告诉我。

使用WEEKNUM时要考虑的一件事是,除非您使用选项21或ISOWEEKNUM,否则年初将有一个星期被计数两次。它们彼此提供相同的结果,并确保无论年份如何,任何给定的日期都只能分配一个星期的数字。