大半年不上excelhome了,回来一看,这个帖子关注的人还不少,下面对这个排班表做一下解释我所在的单位实行的是四班三运转
运转机制是:白、白、中、中、休、夜、夜、休
即8天一个周期,8天里面工作6天,休息两天
我们给他们编号,分别是0、1、2、3、4、5、6、7A9单元格里面的公式是=MOD(A4-39846+2*$A$10,8)公式里面的39846是一个日期序列,即2009-2-2日
当天甲班休息(中班之后的休息),乙班上第二个夜班,丙班上第一个白班,丁班上第一个中班A4-39846得到选定日期和2009-2-2的时间差
$A$10里面的数据是一个修正值,公式是=IF(A2="甲班",2,IF(A2="乙班",3,IF(A2="丙班",0,1)))就是根据班别不同,设置一个修正值
=MOD(A4-39846+2*$A$10,8)的意思就是把A4-39846+2*$A$10计算出来的数值用8来除,得到余数
为什么要得到余数呢
这里有必要讲一下
我这个表是以2009-2-2日的上班情况为基础的
假如今天是2009-2-3,那么计算甲班的A4-39846+2*$A$10等于39847-39846+2*2=5
我们再找对应的编号,5对应的是第一个夜班,所以2009-2-3甲班上第一个夜1
计算乙班的A4-39846+2*$A$10等于39847-39846+3*2=7
我们再找对应的编号,7对应的是第一个休班,所以2009-2-3乙班休班
A3单元格的公式=IF(A9=0,"白1",IF(A9=1,"白2",IF(A9=2,"中1",IF(A9=3,"中2",IF(A9=4,"休班",IF(A9=5,"夜1",IF(A9=6,"夜2","休班")))))))就是根据这种对应关系算出班次来的
A9单元格的字体颜色被我设置成了白色
公式也不保护了,如想编辑,点击工具→保