選択された「日にち」に該当する
前日勤務の略称一覧(前日、当日)を作成します。
「日にち」は1から始まる連番なので、これは「期間内シフト表」における相対列番号と一致しています。
=IF(OFFSET($T3,,$D$12-2)="","",OFFSET($T3,,$D$12-2))
当日の勤務も同様に、
=IF(OFFSET($T3,,$D$12-2)="","",OFFSET($T3,,$D$12-1))
で求められます。
-2 , -1 が取り出す列位置の調整。
-1 , 0 ではなく、-2 , -1 となるのは、
相対位置が 0 から始まるため。
IFで空白かを判定しているのは、元の表で勤務が無い日の対応。
空白であれば空白を表示、そうでなければ、「日にち」分、列方向に
OFFSET関数でシフトしたセルの値を表示しています。
空白の場合、そのまま空白を表示してくれると話が早いのですが、「=」で値をリンクすると空白セルは「0」となってしまいます。
同じ式(
OFFSET($T3,,$D$12-2))を2回記述するのは見苦しいのですが、良い方法が思い付くまで、とりあえず・・・
前日勤務略称の相対行位置の求め方は、当日勤務と同じ。
始業時刻は、
MAX(0,INDEX($E$6:$H$9,$I23,COLUMN()-COLUMN($I$22))-1)
で求めることができます。ここで注意点がピンクの部分。
前日勤務なので、当日のシフト表に載せるためには
1日前としておきます。(
1を引く)
ただし、そのままだと
負の値になることがありますので(前日が日勤の場合など)、
最小値は0時(=0)とする必要があります。
MAX関数で0と比較して大きい方を採ることで最小でも0を短い記述で実現できます。
前日の夜勤は、午前0時から8時までの分が当日の勤務チャートに登場。