在判断本月的日期上不能使用电脑的系统时间(如today()),不然过了时间后要查以前月份的住宿天数比较麻烦,需要改电脑时间等。建议用一个单元格来记录统计报表的月份,这样一方面便于知道是统计哪个月的,更重要的一方面随时查看任何月份的统计都是正确且不用改时间。
我下面是基于此思路进行设计。
1、在A2输入统计月份的第一天,如统计2012年3月数据则输入2012-3-1,统计2012年4月数据则输入2012-4-1,设置为日期格式
2、B列为入职日期,C列为离职日期,设置为日期格式
3、D列为计算当月住宿天数,设置为数值,小数位0
4、D列的公式
IF(C4=0,IF($A$2>B4,1+DATEDIF($A$2,DATE(YEAR($A$2),MONTH($A$2)+1,1)-1,"d"),1+DATEDIF(B4,DATE(YEAR($A$2),MONTH($A$2)+1,1)-1,"d")),IF(C4<$A$2,0,IF($A$2>B4,1+DATEDIF($A$2,C4,"d"),1+DATEDIF(B4,C4,"d"))))
备注:
对数据异常的情况没有进行特殊处理,如果计算的值不正常(大于月份的天数,或者错误提示等)则说明你输入的日期存在这几种情况,检查一下即可:
1)格式是否按照要求,日期和数据
2)入职日期是否已经大于你统计的月份了,如统计月份是2012-3-1,而出现了入职日期是2012-5-3
3)离职日期是否小于入职日期
4)离职日期的月份是否大于统计的月份,如统计月份是2012-3-1,而离职日期是2012-5-3