为什么Project中任务的完成时间比你想的晚一天?
https://www.office26.com/project/18995.html
Project不是随便摸索两下就能掌握的,很多同学在使用了相当长一段时间后,仍然不能算入门。举个例子,绝大多数人用Project是用来做进度计划的,资源和成本可能都很少涉及。咱就说Project进度计划的功能吧,我觉得很多所谓“资深”用户可能连它的基本逻辑都未必能搞明白。
比如说,很多人做了计划以后,可能会发现一个奇怪的问题,就是任务的完成时间总是比自己算出来的晚一天。咱们把问题简化一下,比如创建了一个任务A(没有设置过任何前置任务),工期明明是1天,完成时间却比开始时间晚一天,如下图所示,开始时间在星期一,而完成时间在星期二。或者工期是2天如任务B,完成时间却是在第三天,开始时间是星期一,完成时间却是星期三。
![为什么Project软件中任务的完成时间比你想的晚一天?](https://www.office26.com/uploads/allimg/201002/1556402440-0.jpg)
你有没有碰到过这个问题呢?
有些同学遇到过,有些同学是遇到了但是自己没发现。
好,现在告诉大家这些坑是谁挖的,应该怎么避免。
原因1:在桌面鼠标右键新建Project文档生成的文件
很多人习惯在桌面上通过鼠标右键新建Office文件,这种方式本身无可厚非,但是用在Project软件上就不行了,为什么呢?这会暴露Project软件的一个bug。
通过这种方式建立的新Project文件,任务的开始时间不是默认的早上8:00,而是早上9:00(也许程序员不想那么早起床吧)。怎么验证这种说法呢?可以点击【文件】-【选项】-【常规】-【日期格式】,在里面选择一个日期+几点几分的形式,比如2009年1月28日 12:33这种,如下图所示,点击【确定】。
![为什么Project软件中任务的完成时间比你想的晚一天?](https://www.office26.com/uploads/allimg/201002/155640F12-1.jpg)
然后回到Project计划,再看原来的计划,如下图所示。任务A和任务B的开始时间都是9:00,而不是软件默认的工作时间早上8:00。
![为什么Project软件中任务的完成时间比你想的晚一天?](https://www.office26.com/uploads/allimg/201002/1556406134-2.jpg)
那么,为什么任务A和B是早上9:00开始就会导致完成时间比自己算的晚一天呢?这就牵扯到Project一个非常重要、非常重要、非常重要的计算逻辑。
几乎所有用户都以为Project是按照工期的天数来计算进度的,既然在工期里输入了1天,那么这个任务就占用1天。实际上这种朴素的理解是不对的。Project在进度计算时,底层的计算逻辑是先将Project的工期换算成对应的小时数,然后根据小时数计算任务的完成时间,不论工期单位是天、周、还是月,原理都是如此。
默认情况下,工期1天对应8个小时。注意这个对应关系和日历设置无关,而是和【选项】中【每日工时】数有关,如下图。
![为什么Project软件中任务的完成时间比你想的晚一天?](https://www.office26.com/uploads/allimg/201002/1556405448-3.jpg)
好了,对于之前的例子,任务A是从早上9点开始,那么它的工期是1天(8个小时),那么1月21日星期一上午它工作3个小时(9:00-12:00),下午工作4个小时(13:00-17:00),还差一个小时的工作量怎么办呢?就顺延到了第二天,也就是8:00-9:00再工作一个小时,所以任务A的完成时间就成了1月22日星期二上午9:00了。同理,任务B的完成时间就成了1月23日星期三上午9:00。
这样就造成了,计算出来的完成时间总是会比你想的晚一天。
通过在桌面鼠标右键新建的Project文档,任务的开始时间是从早上9:00开始算的,而不是默认的早上8:00。而这个bug在Project 2016之前的版本或者Project 2016部分版本上都存在。所以,看了这篇文章,以后不要再通过鼠标右键新建Project文档了,直接点击软件图标打开空白项目最稳妥,以后养成习惯吧。
这个问题本来是程序员挖的坑,不幸被你踩上了。而下面要说的第二种情形,则是由于不懂Project软件的原理自己犯的错了。
原因2:自己手动修改了【选项】中的每日工时数,并且和日历的工作时间不匹配
在前文给大家讲了,并且讲了三遍,Project进度计算的底层逻辑是先将工期换算成对应的小时数,以此来计算完成时间。而这个工期与小时数之间的对应关系,与日历无关,而是与【选项】设置有关。
假如你认为自己的公司每天上班9个小时,于是就擅自在选项中把【每日工时】改成了9个小时,如下图所示。
![为什么Project软件中任务的完成时间比你想的晚一天?](https://www.office26.com/uploads/allimg/201002/155640O35-4.jpg)
但是与此同时,你并没有修改日历中的默认工作时间(上午8:00-12:00,下午13:00-17:00),那么会出现什么情况呢?
我们在一个空白的项目中试验一下,注意,不要通过鼠标右键新建Project文档,直接点击软件图标进入一个空白项目。
随便创建一个任务A,工期为1天,再创建一个任务B,工期为2天,如下图所示。
![为什么Project软件中任务的完成时间比你想的晚一天?](https://www.office26.com/uploads/allimg/201002/1556403429-5.jpg)
我们看,任务A的工期是1天,但是它的完成时间却是在第二天。任务B的工期是2天,但是它的完成时间却是在第三天。这是什么原因呢?
这就是因为Project选项中的每日工时数与日历中的工作时间不匹配造成的。
由于你在选项中手动将每日工时改成9个小时,而日历中的工作时间没有相应修改,仍然是8个小时(上午8:00-12:00、下午13:00-17:00),所以任务A的工期为1天(也就是按照9个小时计算),所以它在1月21日星期一完成了8个小时,还需要在第二天再完成1个小时的工作量(8:00-9:00)。所以,在上图中能看到,任务A的完成时间实际上是第二天1月22日的上午9点。这样它的完成时间就比你想的多一天了。
再来看任务B,工期是2天(也就是2*9=18个小时),它在1月21日和1月22日每天各完成8个小时工作量后,还需要再完成2个小时工作量才能凑够18个小时,所以它在第三天还工作了2个小时(8:00-10:00),于是完成时间就落在了第三天1月23日10:00。
所以,大家看到了吗?当选项中的每日工作日与日历中的工作时间不匹配的时候,就会出现Project计算出来的完成时间和你想象的不一致。