ページ移動:JavaScriptを有効にして下さい!

3.勤務詳細表を作成



選択された「日にち」の勤務詳細(始業時刻、終業時刻、休み時刻などの詳細情報をまとめた表を作成します。

この詳細表が勤務時間チャートのベースとなります。



設定例

以下、設定値の例

A.勤務略称

選択された「日にち」に該当する前日勤務の略称一覧(前日、当日)を作成します。
「日にち」は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回記述するのは見苦しいのですが、良い方法が思い付くまで、とりあえず・・・

B.当日時刻情報

当日勤務略称の種別表での相対行位置は、MATCH(E23,$D$6:$D$9,0) で得られます。
この行位置と「日にち」を使用して、勤務種別表からINDEX関数を使って、それぞれの時刻(始業時刻、終業時刻・・)を以下の式
 INDEX($E$6:$H$9,$N23,COLUMN()-COLUMN($N$22))
で求めることができます。

COLUMN()-COLUMN($N$22)の部分は、COLUMN関数を使った勤務種別表での列番号を設定する式。
個別に、1,2,3,4とすると、それぞれ異なるになり、式をコピーできなくなります。
列の基準セルからの相対位置を出すことで、1つの式をコピー可能となります。

それぞれの式にはIF関数による空白処理を追加。

C.前日時刻情報

前日勤務略称の相対行位置の求め方は、当日勤務と同じ。

始業時刻は、
MAX(0,INDEX($E$6:$H$9,$I23,COLUMN()-COLUMN($I$22))-1)
で求めることができます。ここで注意点がピンクの部分。

前日勤務なので、当日のシフト表に載せるためには1日前としておきます。(1を引く
ただし、そのままだと負の値になることがありますので(前日が日勤の場合など)、最小値は0時(=0)とする必要があります。
MAX関数で0と比較して大きい方を採ることで最小でも0を短い記述で実現できます。

前日の夜勤は、午前0時から8時までの分が当日の勤務チャートに登場。


関連

ソルバーを使用した魔方陣の作成 - 3x3,4x4
ソルバーによるシフトパターンの自動配置 - 人件費を最小に抑える従業員の勤務スケジュール




×
PageTop