我正在深入研究在 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
答案 0 :(得分:1)
假设新的会计年度从第一个星期一开始,那么您可以使用 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
。