✔ 最佳答案
我相信你想要的是一個可以幫助你編制排班的工具,而不是一個排班的結果。
例如下面條連結幅圖:
http://i1372.photobucket.com/albums/ag338/sun1wong/Capture0002_zpsa190bf6e.png
上圖中的顏色標示,可以幫你即時留意:
1) 早班排5人, 中班排5人, 夜班排3人 (多過所定人數就會紅色)
2) 被安排排夜班的人員, 當日必須不再排班。 (排了班就會橙色)
3) 員工不可連續休息2天 (連續例假就會黃色)
4) 每一格只可以填入早、午、晚、例、年其中一項 (每人一天只可排其中一班)
你可以用條件化格式設定(Conditional formatting)及欄位資料驗証(Data Validation)去整。方法如下:
先畫出輸入的表格,即如圖中在A欄設定1到20,代表20人。在第一列的B到H設定週一至周日。
然後選取B2:H21的範圍,在menu bar揀data validation中,設定表單(list)及來源(Source)輸入"早,午,晚,例,年"。 (限制格內容為早,午,晚,例,年)
最後用Conditional formatting為以下範圍設定條件:
$B$2:$H$21
=AND(IF(COUNTIF(B$2:B$21,"早")>5,1),IF(B2="早",1))
=AND(IF(COUNTIF(B$2:B$21,"午")>5,1),IF(B2="午",1))
=AND(IF(COUNTIF(B$2:B$21,"晚")>3,1),IF(B2="晚",1))
$B$2:$B$21
=AND(IF(H2="例",1),IF(B2="例",1))
=AND(IF(H2="晚",1),OR(IF(B2="早",1),IF(B2="午",1),IF(B2="晚",1)))
$C$2:$H$21
=AND(IF(B2="例",1),IF(C2="例",1))
=AND(IF(B2="晚",1),OR(IF(C2="早",1),IF(C2="午",1),IF(C2="晚",1)))
設定方式如下面條連結幅圖:
http://i1372.photobucket.com/albums/ag338/sun1wong/Capture0003_zps3ef5a097.png
上面例子是用英文版Excel2013所做。
希望你跟到或者理解到上文而幫到你。