Excel有计算加拿大联邦假日的功能吗?

lvjbypge  于 2023-02-05  发布在  其他
关注(0)|答案(4)|浏览(97)

我想知道如何在单元格中使用NETWORKDAYS函数来计算过去/将来的加拿大联邦假日日期。由于假日日期每年都在变化,是否有函数或VBA代码可用于计算?
例如,我有一个10年的项目,我想计算开始日期和结束日期之间的差异,不包括周末和节假日。
比如,公民假日是8月的第一个星期一。2011年是1号,但2012年是6号。
2011年的复活节星期一是25号,但2012年是9号。
因为NETWORKDAYS需要确切的假期日期才能工作,我需要计算未来的假期日期(10- 15年后)
我希望这是有意义的...

kmb7vmvb

kmb7vmvb1#

你可以很容易地用公式方法制作一个列表,例如,对于劳动节列表年份,只在A2下面,在第2行的另一列中使用这个公式
=日期(A2,9,8)-工作日(日期(A2,9,6))
这将为相关年份提供9月的第一个星期一-向下列复制公式
编辑:这里有一个workbook,我想所有的假日都是按照你的规则从2000年到2099年计算的,如果你想要2000年之前的日期,那么只要改变A列中的年份,日期就会自动改变
我会在范围中添加几个空白列,例如使C2:M101 = holidays,然后您可以在任何NETWORKDAYS/WORKDAY函数中使用该命名范围-额外的列将允许您输入任何“特别”假日

r1wp621o

r1wp621o2#

我知道我有点晚了线程,但由于某种原因,链接到您的文件没有打开。我很想看看你如何计算加拿大假期。我已经找到了解决方案:劳动节,复活节,耶稣受难日和维多利亚日,但仍在寻找其余的。
劳动节=日期(A2、9、8)-工作日(日期(A2,9,6))复活节=楼层(“5/"&日(分钟(A2/38)/2+56)&"/"&A2,7)-34耶稣受难日=楼层(日期(A2,5,天(分钟(A2/38)/2+56)),7)-36维多利亚日=日期(A2,5,2,5)-工作日(日期(A2,5,2,5),3)-(7*(工作日(日期(A2,5,2,5),3)=0))4位数年份必须在A2中

c3frrgcw

c3frrgcw3#

工作日为周一至周五,节假日除外。
周末期间的某些假日应移至下周一(例如加拿大国庆日、节礼日、新年)或上周五(例如圣诞节)
如果财政年度为FYear,则以下是加拿大安大略省的假日公式
霍利迪公式
新年=工作日(日期(FYear,1,0),1)
家庭日=日期(FYear,2,22)-工作日(日期(FYear,2,6))
耶稣受难日=楼层(日期(FYear,5,日(分钟(FYear/38)/2+56)),7)-36
维多利亚日=日期(F年5月25日)-工作日(日期(F年5月23日))
加拿大日=日期(FYear,7,1)+(工作日(日期(FYear,7,2))〈3)(3-工作日(日期(FYear,7,2)))
公民日=日期(F年,8,8)-工作日(日期(F年,8,6))
劳动日=日期(F年,9,8)-工作日(日期(F年,9,6))
感恩节=日期(FYear,10,15)-工作日(日期(FYear,10,6))
圣诞节=日期(F年,12,25)-(工作日(日期(F年,12,26))〈3)
工作日(日期(F年,12,26))
节礼日=日期(F年,12,26)+(工作日(日期(F年,12,27))〈3)*(3-工作日(日期(F年,12,27)))
下一个新年=工作日(日期(FYear+1,1,0),1)

svmlkihl

svmlkihl4#

我发现这个页面非常有用,但我有一些补充。我的用例是我想知道统计假期何时发生,即使它移到了另一天,如星期五或星期一。这些公式适用于@Year包含简单数字形式的年份的表。
美国独立日的表现就不同了。如果7月4日是星期六,那么7月3日就是假日。如果7月4日是星期日,那么7月5日就是假日。我发现把这些语句写成嵌套的IF语句更直接:
=IF(WEEKDAY(DATE([@Year],7,4))=7, DATE([@Year],7,3), IF(WEEKDAY(DATE([@Year],7,4))=1,DATE([@Year],7,5),DATE([@Year],7,4)))
其次,上面的公式在2021年这样的年份不起作用,因为圣诞节和节礼日是星期六和星期日,我再次认为嵌套的IF更有效。
我们知道,如果圣诞节(12月25日)是星期六,那么统计假日是12月27日,如果是星期日,那么统计假日是12月26日。=IF(WEEKDAY(DATE([@Year],12,25))=7,DATE([@Year],12,27),IF(WEEKDAY(DATE([@Year],12,25))=1,DATE([@Year],12,26),DATE([@Year],12,25)))
同样,我们知道,如果节礼日是星期六或星期日(意味着圣诞节是星期六),那么统计数字是12月28日。如果它福尔斯在星期一(意味着圣诞节是星期日),那么它移动到12月27日。
=IF(OR(WEEKDAY(DATE([@Year],12,26))=7,WEEKDAY(DATE([@Year],12,26))=1),DATE([@Year],12,28), IF(WEEKDAY(DATE([@Year],12,26))=2, DATE([@Year],12,27), DATE([@Year],12,26)))

相关问题