close

延續排班之一

一、定義應排班人員

排班規則

1.人員分成假日/正常班人員,不可以跨班別上班,可自行添增人員。

2.假日/正常班,每班至少要2位,最多10位,且每月班別人數為固定;若需增加人數,亦可自行定義。

3.假日定義為國定假日、星期六/日,可自行添加假日定義。

4.若是每月假日/正常班名單異動,需自行修正公式,即可每月換班時使用。

5.有關人員每週時數、每月總時數等限制,人員休假、調班及特別限制等因素目前尚未規劃。

如同以上之定義,將人員分開各班別,以便排班時判斷人員。

二、定義各班別人數

我用正常班需要12位,假日班需要5位。且設計上一次各班別最後一位為那位。

故,我的排班表設計如下:

再來介紹此表設計

黃色為資料輸入,正:12,假:5;去年度最後一位輪值人員為編號24、6。

再來介紹儲存格之函數設計

日期及班別已在前篇介紹,不再多述。

以1/1之前一位函數寫法($F$4),我是用   =IF(E4=0,OFFSET(F4,-1,3),OFFSET(F4,-1,6)),此為毛判斷班別,再去帶入去年度最後一位輪值人員編號

而1/2之寫法($F$5)為 =IF(E5=E4,IF(E5=0,OFFSET(F5,-1,$K$1),OFFSET(F5,-1,$H$1)),IF(E5=E3,IF(E5=0,OFFSET(F5,-2,$K$1),OFFSET(F5,-2,$H$1)),IF(E5=E2,IF(E5=0,OFFSET(F5,-3,$K$1),OFFSET(F5,-3,$H$1)),IF(E5=E1,IF(E5=0,OFFSET(F5,-4,$K$1),OFFSET(F5,-4,$H$1)),"F"))))

這是判斷已開始排班之人員表中,最後一位之編號。以下依此類推~

人員1之函數寫法($F$5),為 =MOD(F4,COUNTIF(人員名單!$D$2:$D$110,E4))+1

人員2之函數寫法為 =IF(E4=0,(IF(COUNT(G4:G4)>=$K$1,"",MOD(G4,COUNTIF(人員名單!$D$2:$D$110,$E4))+1)),(IF(COUNT(G4:G4)=$G$1,"",MOD(G4,COUNTIF(人員名單!$D$2:$D$110,$E4))+1)))

人員3~12 參考人員2類推。

沒人員之儲存格就用「設定格式化之條件」,讓儲存格填滿灰色。

如此,產生了此平/假日班別人員代碼

三、帶入各班別人員名單

有了人員代號,要如何做出以下表呢?

我用1/1 人員1($U$4)來說明,所用函數公式為 =IFERROR(IF($E4=0,VLOOKUP(G4,人員名單!$A$2:$C$25,3,1),VLOOKUP(G4,人員名單!$A$26:$C$110,3,1)),"")

若沒人員名單,如二之方式,產生灰階填滿。

四、延伸幾個問題

1.若一天有二班別以上,要如何使用本表

我建議用一班別一張表,不就簡單化,再將各班別合併一張工作表,依日期排序,不就成了。

2.若是有人請假、調班呢?

這問題,我仍在開發,目前沒答案分享。

3.人員異動

我用人員名單來控管,內容更新就是異動後名單了。

4.其他

我仍在摸索中,也就是沒有答案。預設目標是用純函數來寫排班表。

arrow
arrow
    文章標籤
    EXCEL 排班
    全站熱搜
    創作者介紹
    創作者 sxt66329 的頭像
    sxt66329

    sxt66329的部落格

    sxt66329 發表在 痞客邦 留言(0) 人氣()