延續前一篇文章:

Excel-在月曆型式中顯示排班結果(SUMPRODUCT,OFFSET,DATE,ROW)

如果想要給每一位員工一張個人的值班表,該如何處理?


【公式設計與解析】

作法一:標示[班別]姓名

Excel-在月曆型式中顯示排班結果(個人)(SUMPRODUCT,OFFSET,DATE,ROW)

先將日期、早班、中班、晚班各自的範圍內的儲存格定義名稱為:日期、早班、中班、晚班。(選取排班資料清單的所有儲存格,按 Ctrl+Shift+F3 鍵,勾選「頂端列」。)

儲存格A8:=IFERROR("[早]"&OFFSET($J$2,SUMPRODUCT((日期=DATE
($A$1,$G$1,A7))*(早班=$D$1)*ROW(日期))-2,,,),"")

若該日期沒有排到班,則公式會產生錯誤訊息,所以藉助 IFFERROR 函數來顯示空白。

儲存格A9:=IFERROR("[中]"&OFFSET($K$2,SUMPRODUCT((日期=DATE
($A$1,$G$1,A7))*(中班=$D$1)*ROW(日期))-2,,,),"")

儲存格A10:=IFERROR("[晚]"&OFFSET($L$2,SUMPRODUCT((日期=DATE
($A$1,$G$1,A7))*(晚班=$D$1)*ROW(日期))-2,,,),"")

複製儲存格A8:A10,貼至所有日期的儲存格中。


作法二:標示[班別]

Excel-在月曆型式中顯示排班結果(個人)(SUMPRODUCT,OFFSET,DATE,ROW)

儲存格A8:=IFERROR(IF(SUMPRODUCT((日期=DATE($A$1,$G$1,A7))*(早班=
$D$1)*ROW(日期)),"早班",""),"")

儲存格A9:=IFERROR(IF(SUMPRODUCT((日期=DATE($A$1,$G$1,A7))*(中班=
$D$1)*ROW(日期)),"中班",""),"")

儲存格A10:=IFERROR(IF(SUMPRODUCT((日期=DATE($A$1,$G$1,A7))*(晚班=
$D$1)*ROW(日期)),"晚班",""),"")

複製儲存格A8:A10,貼至所有日期的儲存格中。

arrow
arrow
    全站熱搜

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