我正在紧锣密鼓地研究在Power Query中生成的会计日历。我最后的挑战之一是确定开始日期和结束日期以及天数对于我们的财政月份。结构是这样的:
Date Fiscal Month Fiscal Year
28.12.2020 December 2020
29.12.2020 December 2020
30.12.2020 December 2020
31.12.2020 December 2020
01.01.2021 December 2020
02.01.2021 December 2020
03.01.2021 December 2020
04.01.2021 January 2021
05.01.2021 January 2021
06.01.2021 January 2021
07.01.2021 January 2021
08.01.2021 January 2021
09.01.2021 January 2021如何在power查询中确定此信息?
编辑:添加会计周计算:
if Number.RoundDown((Date.DayOfYear([Date]) - (Date.DayOfWeek([Date], Day.Monday) + 1) + 10) / 7) = 0 then
Number.RoundDown((Date.DayOfYear(#date(Date.Year([Date]) - 1, 12, 31)) - (Date.DayOfWeek(#date(Date.Year([Date]) - 1, 12, 31), Day.Monday) + 1) + 10) / 7)
else if (Number.RoundDown((Date.DayOfYear([Date]) - (Date.DayOfWeek([Date], Day.Monday) + 1) + 10) / 7) = 53 and (Date.DayOfWeek(#date(Date.Year([Date]), 12, 31), Day.Monday) + 1 < 4)) then
1
else
Number.RoundDown((Date.DayOfYear([Date]) - (Date.DayOfWeek([Date], Day.Monday) + 1) + 10) / 7)发布于 2021-02-25 18:01:16
假设新的会计年度从第一个星期一开始,那么您可以使用Date.WeekOfYear和Date.DayOfWeek函数在启动时进行检查。所以对于Fiscal Year可能是:
if (Date.WeekOfYear([Date]) > 1
or Date.DayOfWeek(#date(Date.Year([Date]), 1, 1), Day.Monday) = 0) then
Date.Year([Date])
else
Date.Year([Date]) - 1类似地,Fiscal Month将是:
if (Date.WeekOfYear([Date]) > 1
or Date.DayOfWeek(#date(Date.Year([Date]), 1, 1), Day.Monday) = 0) then
Date.MonthName([Date])
else
Date.MonthName(Date.AddMonths([Date], -1))会计年度的开始日期可以根据1月1日的星期几来计算:
#date([Fiscal Year], 1, Number.Mod(7 - Date.DayOfWeek(#date([Fiscal Year], 1, 1), Day.Monday), 7) + 1)会计年度的结束日期是下一个会计年度开始的前一天:
Date.AddDays(#date([Fiscal Year] + 1, 1, Number.Mod(7 - Date.DayOfWeek(#date([Fiscal Year] + 1, 1, 1), Day.Monday), 7) + 1), -1)并且可以根据当前日期和开始日期的差值来计算天数:
Duration.Days([Date] - [Fiscal Year Start Date]) + 1
如果Week Number是带有会计周编号的列的名称,那么会计月份的日期可以这样计算:
if [Week Number] <= 4 then [Day number]
else if [Week Number] <= 8 then [Day number] - 28
else if [Week Number] <= 13 then [Day number] - 56
else if [Week Number] <= 17 then [Day number] - 91
else if [Week Number] <= 21 then [Day number] - 119
else if [Week Number] <= 26 then [Day number] - 147
else if [Week Number] <= 30 then [Day number] - 182
else if [Week Number] <= 34 then [Day number] - 210
else if [Week Number] <= 39 then [Day number] - 238
else if [Week Number] <= 43 then [Day number] - 273
else if [Week Number] <= 47 then [Day number] - 301
else [Day number] - 329第53周将分配给最后一个月。
我猜您将使用这些自定义列来构建日历表。您还需要一个数字会计月份,以便您可以正确排序月份。它与Fiscal Month,但使用Date.Month而不是Date.MonthName在里面。
https://stackoverflow.com/questions/66365332
复制相似问题