设为主页
加入收藏
联系我们
返回首页
 
   
硬件故障 系统故障 软件学习
 
   
  您现在的位置>>首页>>软件学习>> 巧用MSOfficeExcel自动工作日计算  
 
     
 

 

巧用MSOfficeExcel自动工作日计算

文章来源:网络


  工作量当然得以 “ 工作日 ” 的数量去安排,但每个月的天数不同,而且周六日也不尽相同。如果想准确地知道一个月有多少个工作日,可以请 Excel 来帮忙!

小知识

  标准工作日是指法律规定的各企业、事业、机关、团体等单位在正常情况下普遍实行的工作日。通俗的说,就是指除了国家法定节假日(双休日、元旦、五一、国庆、春节等)之外正常工作的日期。

任务分析

  因为每月的总天数和双休日的分布是不同的,而且春节是农历的假期,简单地使用 Excel 函数去计算是满足不了要求的。我们先使用 Excel “ 分析工具库 ” 中的 networkdays() 函数计算出 “ 准工作日 ” ,再考虑其中的特殊农历假日。这样就能准确的算出 “ 工作日 ” 的天数。

有请 networkdays() 函数

  通常情况下,在 Excel 中是找不到这个函数的。别着急,跟我来。单击 “ 工具 → 加载宏 ” ,在弹出的 “ 加载宏 ” 对话框中复选 “ 分析工具库 ” ,再单击 “ 确定 ” 按钮。将 office 的安装光盘放入光驱,按提示即可安装成功,如图 1 。


巧用MSOffice Excel自动工作日计算

外来的和尚念不好经

networkdays() 函数的语法为: networkdays(Start_date , End_date , Holidays) 。其中 Start_date 表示开始日期, End_date 为终止日期, Holidays 表示一个或者多个特定假日序列,可以采用单元格引用的方式。

  如图 2 , B8 单元格公式 “=networkdays(B2,B3,B4:B6)” 结果为 20 。事实上, 2004 年的 10 月 2 日 和 3 日是星期六和星期天,那么按照我们的习惯就会通过调休的方式,最终得到 10 月份只有 18 天上班,而不是 networkdays() 函数计算出的 20 天。

特殊假日的处理

  虽然说直接应用 networkdays() 函数并不能得到正确的工作日天数,但我们还是可以通过对此函数的变化来得到。图 3 是我们的范例,演示了如何一步一步逼近我们的目标。

  第一步:将 A 列定义为月份。选中 A 列,在右键菜单中选择 “ 设定单元格格式 ” ,在 “ 数字 ” 标签中选择 “ 分类 ” 为 “ 自定义 ” , “ 类型 ” 中输入 “yyyy-mm” 格式,单击 “ 确定 ” 按钮退出。

  第二步:设计 B 列公式。先直接用 networkdays() 函数计算只考虑本月除去双休日后的天数。虽然可直接使用该函数,但需要知道每月的开始日期和终止日期。开始日期当然是每月的 1 日,用 “date(year(A2),month(A2),1)” 表示就 OK 了。结束日期应当是每月的最后一天,这就有些难度了,究竟是 30 日、 31 日还是 28 日、 29 日?需要一个复杂的判断关系。这里我们采用了一个变通的办法,就是当月的最后一天其实就是下月的第一天再减去 1 天,所以我们可以用 “date(year(A2),month(A2)+1,1)- 1” 来表示。于是 B2 的公式就有了: “=networkdays(date(year(A2),month(A2),1),date(year(A2),month(A2)+1,1)-1)” 。

巧用MSOffice Excel自动工作日计算

巧用MSOffice Excel自动工作日计算

  第三步:计算除了春节以外的双休日。我们知道国家规定的公众假日一共 10 天,除了春节的 3 天是每年变化的外,其余元旦 1 天,劳动节 3 天,国庆节 3 天都是固定的。因此我们可以用 IF 函数对月份是否是 1 月、 5 月和 10 月做判断,再来减去相应的公众假日天数,就得到了不考虑春节以外的工作日。于是 C2=if(month(A2)=5,B2-3,if(month(A2)=5,B2-3,if(month(A2)=1,B2-1,B2))) 或者使用 or() 函数就是 C2=if(or(month(A2)=5,month(A2)=10),B4-3,if(month(A2)=1,B4-1,B4)) 。

  第四步:考虑春节的问题。根据常识,春节的三天只会在 1 月份或者 2 月份出现,也就是说最后的判断只正对 1 、 2 月份。通过万年历查询得到 2000——2010 这十年的春节分布,巧的是正好没有春节三天跨月份的年份,也就是说春节三天不是落在 1 月份就是落在 2 月份,如图 4 所示,这给我们应用 IF 函数判断带来了方便。通过对年份和月份的判断,减去相应的春节天数,就得到了真正意义上的工作日。因此在 D2 中应该输入 =IF(AND(OR(YEAR(A2)=2001,YEAR(A2)=2004,YEAR(A2)=2006,YEAR(A2)=2009),MONTH(A2)=1),C2-3,IF(AND(OR(YEAR(A2)=2000,YEAR(A2)=2002,YEAR(A2)=2003,YEAR(A2)=2005,YEAR(A2)=2007,
YEAR(A2)=2008,YEAR(A2)=2010),MONTH(A2)=2),C2-3,C2)) 。

巧用MSOffice Excel自动工作日计算

  第五步:隐藏过渡列。选中 “B:C” 这两列,在右键菜单中选择 “ 隐藏 ” ,将中间用于计算方便所使用的过渡列 B 和列 C 隐藏即可。

  选中区域 B2:D2 ,按住填充柄向下拖动填充后,只要在 A 列任一单元格输入月份,就可以在 D 列得到该月相应的天数,是不是很方便?

上一篇: 无
下一篇: 完


【本站声明】本站刊载的部分内容全部来源互联网,对于此类文章本站仅提供交流平台,不为其版权负责。如涉及侵犯您的知识产权的文章,请联系我们,我们将尽快做出更正。并向您表示感谢!同时特别感谢对本站所有支持的网友。

 
 
综合搜索 百度 google 爱问 搜狗 中搜 雅虎 MP3 图片 flash 视频
您好!中国好用是残疾人创办站,欢迎你设为首页,你每一次的使用,就是一份爱心,对我们来说就是一份希望......