前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算工作日,反正我从来没见过不需要处理特殊日期的!

计算工作日,反正我从来没见过不需要处理特殊日期的!

作者头像
大海Power
发布2021-08-31 11:37:05
8490
发布2021-08-31 11:37:05
举报
文章被收录于专栏:用户8950297的专栏

经常有朋友问怎么计算两个日期间的工作日问题,本来,对于简单的计数问题,总不会复杂到什么程度,但是,对于这个问题,我通常会说,先确定你的工作日历表,也就是说,先定义好哪些算工作日,哪些算假期——因为每个公司都不一样,甚至每个人都不一样。

- 1 -

当然,无论怎样,我们还是先来看一下完全不需要处理特殊日期的情况。即反正周一到周五就是工作日,周六周日就是休息日,这种情况下,如果用Excel直接解,一个函数搞定:

然鹅,PQ里没有这样的函数,那该怎么办?

——一句话,回归自然:选出周一到周五的日期,然后计数!

直接上公式:

其中,d = {Number.From([开始日期])..Number.From([结束日期])},即根据起止日期转换为数值后生成相应的区间序列(关于生成日期或数值区间的方法有很多,这种方法只是我个人觉得写起来比较方便一点点儿罢了)。

下面的List.Select就是上面的d进行筛选,条件为日期的星期几(Date.DayOfWeek,第2个参数为0时,从0开始计算周一),筛选出来后用List.Count进行计数。

在很多问题上,没有现成的函数时,就要考虑用最基础的算法去实现它

- 2 -

如标题所说,实际工作中,我是从来没见过不需要处理特殊日期的!那么,如果有专门的假期表,该怎么算工作日?

这种情况下,一般来说,应该有一个参与计算的完整的日历表,其中标明了哪些是工作日,哪些是假期——对于很多比较完整的企业数据模型来说,这种完整的日历表应该是比较好的解决方案(如果没有,建议建一个)。样子大概如下:

这种情况下,计算主要就是对日历表进行筛选然后计数:

关于Table.SelectRows函数,前面写的文章里例子太多了,如果不了解,可以去搜索一下。

- 总结 -

在实际工作中关于日期及其相关计算的问题,通常都有很多特殊的情况需要处理,比如这个例子中的特殊假期,还有其他的如年假天数计算等等,每个企业都有自己特定的计算方法,大多数情况下都需要回到比较基础的算法来实现,但是,无论怎么变,仍然是这些基础的函数的熟练运用而已。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档