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

 

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

シフトの条件おさらい

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

Amazonでお得に買う方法

ネット通販の代表格Amazon。Amazonプライム会員に登録すると送料無料の他にも様々な特典がついてきます。

そんなAmazonでの買い物を、さらにお得にするなら、Amazonギフト券への購入チャージをおすすめします。

 

現金でチャージするたびに、チャージ額 × 最大2.5%分のポイントがもらえます。

Amazonプライム会員の方なら是非活用して、更にお得に利用しましょう。

CHARGE NOW

コンビニ・ATM・ネットバンクが対象

1円単位で購入可能

スポンサーリンク

フォローする

コメント

  1. 大和田学 より:

    nyaooo.g9-37-shin@docomo.ne.jp

    解説を見ながら作成させていただいております。
    第9回までやってみたのですが、シフト部分の表示が上手くいかない状態です。

    2017年では、
    3月の29.30日の欄に上下段ともに表示、1〜4日の上段が非表示。
    7月では1日の上段が非表示。
    12月では1.2日の上段が非表示。

    月日と曜日は問題なく反映されております。
    関数を間違えて入れてしまっているのでしょうか?

    • taks より:

      ご覧いただきありがとうございます。
      返事が遅くなってしまい申し訳ございません。

      1日〜の非表示については、こちらのミスで1日と2日に入れるべき関数の記事を書き忘れていました。
      記事を作成してアップいたしましたので、ご参照ください。
      【Excel2010】最小限の入力で自動作成するシフト表 第10回 シフトPart5 月初処理【関数】

      月末29、30日の表示についてですが、記事に記載している関数に間違いはありませんでした。
      第9回までを正常に入力されていれば、21日〜31日までは機能するはずです。

      29、30日の欄には、何が表示されていますか?