前言
本文因太多人來求助我,可能當初沒說明如何規劃排班系統的方式,就用前言先將排班系統規劃前,要做那些事才比較好進行排班。
一、排班因素要明確且簡單化
人員:可上什麼班、那幾天休假,總時數
班別:正常班、假日班,連續上有沒有限制,並與日期做明確區分,不能太模糊
二、先做行事曆出來,將全年(含國定假日)一次出來,再分正常班、假日班
三、再將人員、休假日、限制班也用在一張表整來出來
四、再用人員塞班表,或是班表塞人員
若是想自動帶出來,就比較麻煩,有人些是用01010(之數列串)來帶排班表,0代表休假,1代表上班,好處是COUNT總上班數
調班、人員異動、特殊限制、班別A可代表班別B等問題是加重EXCEL判斷及速度,這已經涉及VBA、系統架構設計層次了。
總之一句話,一定要將手上排班規則整理明確,太多不明確就會讓班表更雜亂且不易處理。
本文
日前,朋友問我,如何利用Excel做出月份排班報表,他想做出報表如下圖。
而且排班資料來源為下圖,方便他日後維護用,因此,我開始著手進行此份排班報表。
以下是我進行的步驟。
一、首先,在A1儲存格建立年份資料,此欄位為了方便日後使用,採用資料驗證的方式,資料驗證設定如下圖,設定好了在A1儲存格右側就多了下拉式鍵來代替輸入值。
二、再來於B1儲存格建立各月份資料,此處為直接輸入方式,並運用儲存格格式設定技巧,設定內容如下圖,讓此儲存格呈現5月的外觀。
三、再接下來,建立日期,因為29~31日需要判斷月份(待兒解說處理方式),故1~28日就直接帶值(如下圖)。
四、29~31日,利用DATEVALUE及DAY函數設定(設定如下),判斷該值是否呈現。
五、接下來,建立星期對照表(如下圖),再將AK1:AQ2範圍設定名稱管理員為WEEK,方使帶公式使用。
六、接下來處理星期,此處運用WEEKDAY及HLOOKUP(設定如下圖),其中HLOOKUP是利用WEEK名稱管理員來帶入值。
七、因29~31日之日期會因月份不同,產生不一樣的值,較29~31日之星期判斷,我是用以下公式來判斷。
八、接下來是用設定格式化/管理規則的技巧來設定星期六、星期天填滿顏色技巧,
九、進入了管理規則,我設定星期六的技巧如下,其中公式C$2是取其上方星期數的儲存格之值,欲設定星期六、星期天填滿顏色區塊。
十、再至格式,進入儲存格式設定,如下圖。
十一、設定好了格式化,再選定星期六、星期天填滿顏色儲存區塊即如下圖,再去設定星期日。
十二、再來去排班資料全選所有排班人員(員編及姓名),再用移除重複方式,將人名表建立。
十三、再複製已移除重複之人員名單。
十四、再貼上報表人員上,如下圖。
十五、在排班資料多增加二檔,其中VLOOKUP判斷值下公式如下,以利VLOOKUP查詢。
十六、再將新增二欄設定名稱管理員,方便VLOOKUP使用。
十七、最後用VLOOKUP來帶入值,公式如下圖,即可完成。

文章很受用謝謝,請問如果禮拜一要自動填色該如何設定?因為嘗試把六日改成一就無顯示 謝謝
就是步驟十一,改為設定好了格式化,再選定星期一填滿顏色儲存區塊即如下圖,再去設定星期一。
已解決囉 感謝
假日比較少上,真心感謝支持本部落客
*****
*****
*****
*****
請問,某些月份沒有29,30,31儲存格是空白,則星期的部分會顯示#value!,該如何修改? 謝謝!!
在儲存格公式加上=IFERROR(原本公式,"")即可
ok了,非常感謝您提供的資訊,謝謝!!
您好,我全部照您的方式做,結果這一步判斷值完全沒出現...可否求救? 我的KEY IN: =IFERROR(DAY(DATEVALUE($A$1&"/"&$B$1&"/"&"31")),"") 請指教那裡不對了~ 感謝您!!
你要檢查$A$1及$B$1,其中,$A$1是西元年格式,今年2015年其值即2015;$B$1為月份,若是5月其值為5,不能輸入5月,故以上二處之值是否設錯了。
月份設定沒有(通用格式"月")這個選項 導致29~31這都設定不出來 這樣該怎麼辦呢??
月份設定沒有(通用格式"月")這個選項 導致29~31這都設定不出來 這樣該怎麼辦呢??
因預設格式無此格式,請至第二步驟,依內容自行格式。
*****
你好,請問29~30日的函數研究很久都無法顯示 KEY IN如下: =IFERROR(DAY(DATEVALUE($A$1&"/"&$B$1&"/"&"31")),"") 檢查過$A$1及$B$1了 步驟六,七的函數都有顯示 是因為目前年份設定的儲存格數值為G/通用格式的關係嗎 只指教哪裡不對了 感謝你
31 ==> =IFERROR(DAY(DATEVALUE($A$1&"/"&$B$1&"/"&"31")),"") 30 ==> =IFERROR(DAY(DATEVALUE($A$1&"/"&$B$1&"/"&"30")),"") 29 ==> =IFERROR(DAY(DATEVALUE($A$1&"/"&$B$1&"/"&"29")),"") 看上面公式就知道,DATEVALUE 用來判斷日期函數值是否存在,其值為西元年的格式。
感謝你的回覆 我使用的是Excel 2003版 格式數值設定好像沒有西元年的選項 試過資料剖析的日期設定為EMD是乎也沒辦法 請大大指教 謝謝
請問「星期」,此處運用WEEKDAY及HLOOKup照上述公式輸入,顯示錯誤
有圖可了解嗎?是否儲存格沒用絕對位值致公式走位了?
請問可再代入班別嗎?
可,但涉及班別設計問題,層面太複雜。
請問有可能改製為年度排班表嗎???
年度排班表,建議仍以月份合併建立,但年度太長會有變數。
請問網頁文章不能複製,如何開啟列印
有網址?
我想請問如果是4組人輪3班制,某人固定早班,其他人一周輪一種班,這樣怎麼排
要先建立4組之名單、組別及對映輪/早班、3班制之班別(早午晚),依每周為班別循環(此時,利用IF及WEEKNUM 來判斷換班了沒,先填好早班固定值,其他再帶入班別至個人身上,即建立輪班資料表 再利用我星期輪值表模式,填入每周三班人員代碼,再用代碼轉換成人名即可。
您好 , 首先非常感謝您的分享 . 請問您 , 如果我想要排日班做四休二 , 與日夜班做四休二 , 需要怎麼修改ㄋ ??
日班與夜班要分開排,排班表依次序數字(即人員)帶入,再判斷做4休2即可。
請問想解鎖檔案 需要多少費用呢?我的mail:andy.789@hotmail.com
很抱歉,我非解鎖專家,無法報價。
您好請教~~ 如果依照您的休假表~ 我想要呈現5/1下面 呈現出休假人的名字 我應該如何設定公式? 簡單說就是每天最後表格第11列開始 呈現出每天休假人的人名! 感謝你!
休假日排序,是最簡單方式。若是想呈現每天的休假期姓名,可用函數由日期帶入休假者姓名即可
感謝您的回覆! 休假日排序,是最簡單方式。若是想呈現每天的休假期姓名,可用函數由日期帶入休假者姓名即可 請教日期函數帶入休假者姓名我應該怎麼設定函數呢? 感謝幫忙解答!感謝!
*****