0

我试图弄清楚如何计算过去/未来的加拿大联邦假日日期以使用NETWORKDAYS单元格中的函数。因为假期的日期每年都在变化,有没有可以用来计算的函数或 VBA 代码?

例如,我有一个 10 年的项目,我想计算开始日期和结束日期之间的差异,不包括周末和节假日。

就像,公民假期是在八月的第一个星期一。2011年是1号,2012年是6号。

复活节星期一是 2011 年的 25 日,但 2012 年是 9 日。

因为NETWORKDAYS需要确切的假期日期才能工作,所以我需要计算未来的假期日期(未来 10-15 年)

我希望这是有道理的...

4

3 回答 3

2

您可以使用公式方法轻松制作列表,例如劳动节列表年份仅在 A2 向下和第 2 行的另一列中使用此公式

=日期(A2,9,8)-工作日(日期(A2,9,6))

这将给出相关年份 9 月第一个星期一的日期 - 向下复制公式

编辑:我认为,这是根据您的规则从 2000 年到 2099 年计算的所有假期的工作簿。如果您想要 2000 年之前的日期,则只需更改 A 列中的年份,日期将自动更改

我会在范围中添加几个空白列,例如使 C2:M101 = 假期,然后您可以在任何 NETWORKDAYS/WORKDAY 函数中使用该命名范围 - 额外的列将允许您输入任何“临时”假期

于 2013-01-15T17:23:08.267 回答
1

我知道我有点晚了,但由于某种原因,您的文件的链接没有打开。我很想看看你如何计算加拿大的假期。我找到了以下解决方案:劳动节、复活节、耶稣受难日和维多利亚日,但仍在寻找其他的解决方案。

劳动节=DATE(A2,9,8)-WEEKDAY(DATE(A2,9,6)) 复活节=FLOOR("5/"&DAY(MINUTE(A2/38)/2+56)&"/"&A2, 7)-34 耶稣受难日 =FLOOR(DATE(A2,5,DAY(MINUTE(A2/38)/2+56)),7)-36 维多利亚日 =DATE(A2,5,25)-WEEKDAY(DATE( A2,5,25),3)-(7*(WEEKDAY(DATE(A2,5,25),3)=0)) * 4 位数年份必须在 A2 *

于 2020-01-11T04:18:12.973 回答
0

工作日为周一至周五,节假日除外。

周末期间的一些假期应移至下周一(例如加拿大国庆日、节礼日、新年)或上周五(例如圣诞节)

以下是加拿大安大略省假期的公式,如果财政年度是 FYear

圣日公式

新年 =WORKDAY(DATE(FYear,1,0),1)

家庭日 =DATE(FYear,2,22)-WEEKDAY(DATE(FYear,2,6))

耶稣受难日 =FLOOR(DATE(FYear,5,DAY(MINUTE(FYear/38)/2+56)),7)-36

维多利亚日 =DATE(FYear,5,25)-WEEKDAY(DATE(FYear,5,23))

加拿大日 =DATE(FYear,7,1)+(WEEKDAY(DATE(FYear,7,2))<3)*(3-WEEKDAY(DATE(FYear,7,2)))

CivicDay =DATE(FYear,8,8)-WEEKDAY(DATE(FYear,8,6))

劳动节 =DATE(FYear,9,8)-WEEKDAY(DATE(FYear,9,6))

感恩节 =DATE(FYear,10,15)-WEEKDAY(DATE(FYear,10,6))

圣诞节 =DATE(FYear,12,25)-(WEEKDAY(DATE(FYear,12,26))<3)*WEEKDAY(DATE(FYear,12,26))

节礼日 =DATE(FYear,12,26)+(WEEKDAY(DATE(FYear,12,27))<3)*(3-WEEKDAY(DATE(FYear,12,27)))

下一个新年 =WORKDAY(DATE(FYear+1,1,0),1)

于 2021-10-23T05:11:37.490 回答