【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 月度始め【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第8回 シフトPart3 月末処理1【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第9回 シフトPart4 月末処理2【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第10回 休日表示Part1【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第11回 休日表示Part2【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第12回 休日表示Part3【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第13回 休日表示Part4【関数】
【Excel2010】最小限の入力で自動作成するシフト表 第14回 休日表示Part5 最終回【関数】

スポンサーリンク







シェアする

フォローする