【Excel2010】最小限の入力で自動作成するシフト表 第6回 シフトPart1 通常週【関数】

Excel_shift_eye

早いものでこのシリーズも第6回目になりました。ここに来て、いよいよ本題のシフトの入力方法です。

シフトの条件おさらい

第1回で前提条件として、作成するシフト(勤務スタイル)の条件と表の条件を紹介していました。

【Excel2010】最小限の入力で自動作成するシフト表 第1回【関数】

作成するシフトの条件は、以下の通り。

  • 2名
  • A番(早番)、B番(遅番)の2交代制
  • A番は、月曜日から土曜日までの勤務。B番は、月曜日から金曜日まで。
  • 1名当たり、日曜日と隔週土曜日が休み。祭日は勤務。
  • A番(早番)、B番(遅番)を1週間毎に交代する。

作成する表の条件は、以下の通り。

  • 月度計算は、20日締めで作成。
  • 土曜日は青文字、日曜日は赤文字で曜日表示。
  • 日曜日、祭日の列に色を付ける。
  • 各人の休みの日には「○」を表示。
  • 最小限の入力で自動作成。(月度とその月最初のシフト)

シフトの表示

日付や曜日の場合は、日数が少ない月の月末を空欄処理するだけでしたが、シフトの場合は、いくつかクリアしなければならない項目があります。

シフトの条件を考慮して作成すると、今回のシフト表の基本形は、以下の通り。

    

基本的には、A番とB番を交互に繰り返すのですが、ここに月末の空欄を挟んだり、月度始めの曜日が日曜日などだと、最初の勤務日が21日や23日になり、入力位置が変動します。
これに加えて日付や曜日と同じく月末の空欄処理、出勤・休日の判定、月末の参照先が空欄だった場合の処理など、やや複雑な条件分岐を組んでいきます。

通常週上段の表示

月度始めや月末など、特殊な処理が必要ない通常週の表示方法です。

入力している関数は、以下の通り。

=IF(U9=1,"○",IF(AND(T10="A",U9=7),"A",IF(AND(T10="B",U9=7),"○",IF(AND(T10="○",S10="○"),"A",IF(U9=2,"B",T10)))))

曜日だけを基準にして入力できれば簡単なのですが、その場合A番かB番の判別ができません。
曜日 + 前日のシフトを参照して表示させるのですが、その場合もう一つ問題があります。

    

このように前日が日曜日だった場合、判別できませんので更に前の日を見る必要があります。

コード 意味
IF(U9=1 もし U9=1(日曜日) ならば
“○” 真のとき ○
IF(AND(T10=”A”,U9=7) 偽のとき もし T10=”A” かつ U9=7(土曜日) ならば
“A” 真のとき A
IF(AND(T10=”B”,U9=7) 偽のとき もし T10=”B” かつ U9=7(土曜日) ならば
“○” 真のとき ○
IF(AND(T10=”○”,S10=”○”) 偽のとき もし T10=”○” かつ S10=”○” ならば
“A” 真のとき A
IF(U9=2 偽のとき もし U9 が 2(月曜日) ならば
“B” 真のとき B
T10 偽のとき T10の値を表示
))))) 閉じる

わかりにくいですが、簡単に説明してみました。わかりやすく説明する方法、誰か教えてください。

下段の表示

自動入力を目指している表ですので、基本的に下段への入力自体は一切せず、上段を参照して自動入力させます。

入力してる関数は、以下の通り。

=IF(AND(U9=7,U10="○"),"A",IF(AND(U9=7,U10="A"),"○",IF(U9=1,"○",IF(U10="A","B","A"))))

参照先は上段のシフトと曜日です。土日の処理と平日のシフトを判別しています。

コード 意味
IF(AND(U9=7,U10=”○”) もし U9=7(土曜日) かつ U10=”○” ならば
“A” 真のとき A
IF(AND(U9=7,U10=”A”) 偽のとき もし U9=7(土曜日) かつ U10=”A” ならば
“○” 真のとき ○
IF(U9=1 偽のとき もし U9=1(日曜日) ならば
“○” 真のとき ○
IF(U10=”A” 偽のとき もし U10″=”A” ならば
“B” 真のとき B
“A” 偽のとき A
)))) 閉じる

次回は、月度始めの処理と月度始め最初のシフト入力について紹介します。
今回までの内容ができていると、ある程度動いてくれるのでバグも探しやすいですね。

【Excel2010】最小限の入力で自動作成するシフト表 第1回【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第2回 日付Part1【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第3回 日付Part2 月末処理【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第4回 曜日Part1 平常日【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第5回 曜日Part2 月末処理【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第6回 シフトPart1 通常週【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第7回 シフトPart2 月度始め【関数】

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする