4277 |
Excel如何值日生排班(二)含補班及彈性休假 |
如果我們要將下圖G欄員工,藍色跟黑色名單是同一批人(順序相同),員工姓名為黑色是安排上班日一至五值班用,V代表當月第一個上班日值班人員,而員工姓名為藍色是按排週六日值班用,V代表當月第一個假日值班人員,同一套順序,但上班日跟六日分開排班。要怎麼做才可以呢?
首先建立輔助欄記錄當月補班日期及彈性休假日期。
步驟1:點取E3儲存格輸入公式「=IF(WEEKDAY(DATE(2023,A3,B3),2)>5,IF(ISNA(MATCH(DATE (2023,A3,B3),$J$2:$J$20,0)),"休","工"),IF(ISNA(MATCH(DATE(2023,A3,B3),$I$2:$I$20,0)),"工","休"))」後,向下複製到E4:E32儲存格。
步驟2:點取D3儲存格輸入公式「=IF(E3="工",INDEX($G$2:$G$9,IF(MOD(COUNTIF(E$2:E2,"工")+MATCH("V",$F$2:$F$9,0), 8)=0,8,MOD(COUNTIF(E$2:E2,"工")+MATCH("V",$F$2:$F$9,0),8))),INDEX($G$13:$G$20,IF(MOD(COUNTIF(E$2:E2,"休")+MATCH ("V", $F$13:$F$20,0),8)=0,8,MOD (COUNTIF(E$2:E2,"休")+MATCH("V",$F$13:$F$20,0),8))))」後,向下複製到D4:D32儲存格。
公式說明
先判斷同列E欄內容是否為工(E3="工"),若是則統計從水E欄第二列到目前列含有工字元的儲存格數量(COUNTIF(E$2:E2,"工")),再加上V字元位於F2:F9中第幾列(MATCH("V",$F$2:$F$9,0)),將加總值除以8(MOD(COUNTIF (E$2:E2,"工")+MATCH("V",$F$2:$F$9,0),8)),若是等於0,則填入8,否則填入餘數(IF(MOD(COUNTIF(E$2:E2,"工")+MATCH("V", $F$2:$F$9,0),8)=0,8,MOD(COUNTIF (E$2:E2,"工")+MATCH("V",$F$2:$F$9,0),8))),然根據餘數傳回G2:G9儲存格中第幾列資料(INDEX($G$2:$G$9,IF(MOD(COUNTIF(E$2:E2,"工")+MATCH("V",$F$2:$F$9,0),8)=0,8,MOD(COUNTIF(E$2:E2,"工")+MATCH("V", $F$2:$F$9,0),8))),),休假亦雷同。
留言列表