经常有朋友问怎么计算两个日期间的工作日问题,本来,对于简单的计数问题,总不会复杂到什么程度,但是,对于这个问题,我通常会说,先确定你的工作日历表,也就是说,先定义好哪些算工作日,哪些算假期——因为每个公司都不一样,甚至每个人都不一样。
- 1 -
当然,无论怎样,我们还是先来看一下完全不需要处理特殊日期的情况。即反正周一到周五就是工作日,周六周日就是休息日,这种情况下,如果用Excel直接解,一个函数搞定:
然鹅,PQ里没有这样的函数,那该怎么办?
——一句话,回归自然:选出周一到周五的日期,然后计数!
直接上公式:
其中,d = {Number.From([开始日期])..Number.From([结束日期])},即根据起止日期转换为数值后生成相应的区间序列(关于生成日期或数值区间的方法有很多,这种方法只是我个人觉得写起来比较方便一点点儿罢了)。
下面的List.Select就是上面的d进行筛选,条件为日期的星期几(Date.DayOfWeek,第2个参数为0时,从0开始计算周一),筛选出来后用List.Count进行计数。
在很多问题上,没有现成的函数时,就要考虑用最基础的算法去实现它。
- 2 -
如标题所说,实际工作中,我是从来没见过不需要处理特殊日期的!那么,如果有专门的假期表,该怎么算工作日?
这种情况下,一般来说,应该有一个参与计算的完整的日历表,其中标明了哪些是工作日,哪些是假期——对于很多比较完整的企业数据模型来说,这种完整的日历表应该是比较好的解决方案(如果没有,建议建一个)。样子大概如下:
这种情况下,计算主要就是对日历表进行筛选然后计数:
关于Table.SelectRows函数,前面写的文章里例子太多了,如果不了解,可以去搜索一下。
- 总结 -
在实际工作中关于日期及其相关计算的问题,通常都有很多特殊的情况需要处理,比如这个例子中的特殊假期,还有其他的如年假天数计算等等,每个企业都有自己特定的计算方法,大多数情况下都需要回到比较基础的算法来实现,但是,无论怎么变,仍然是这些基础的函数的熟练运用而已。
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!