2015年10月31日 星期六

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,貼至所有日期的儲存格中。

沒有留言:

張貼留言

檢視其他文章

好康東東