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

Excel_shift_eye

シフト部分の3回目は、月末処理の方法を紹介します。
日付や曜日と同様に30日までしかない月や2月末のうるう年判定などをして、空欄処理します。

月末の処理

今回作成する表では、日付のセル列数を31セルで固定しています。
したがって、30日までしかない月や2月末は、セルを空白にする表示法を採用しています。

30日までの月

上段の処理

31日までの月は、1月、3月、5月、7月、8月、10月、12月です。
入力フォームに入力された月がこれらの月のとき、前月の31日を空欄にします。

年月をOR関数を使って “D5” セルの値を参照し、判断させます。
31日のセル”N10”に、以下の関数を入力します。

=IF(OR(MONTH($D$5)=3,MONTH($D$5)=5,MONTH($D$5)=7,MONTH($D$5)=10,MONTH($D$5)=12),"",IF(N9=1,"○",IF(AND(M10="A",N9=7),"A",IF(AND(M10="B",N9=7),"○",IF(AND(M10="○",L10="○"),"A",IF(N9=2,"B",M10))))))

OR関数で、3月、5月、7月、10月、12月が入力されたときは、空欄を表示。
注意点は、1月と8月は31日までの月が連続していますので、OR関数には含めないことです。

それ以外の月では 、日曜日は ○ を表示、土曜日はA番、B番で表示が変わるので、条件分岐を追加します。

コード 意味
IF(OR(MONTH($D$5)=3 ……12) もし D5 が3月…12月ならば
“” 真のとき空欄
IF(N9=1 偽のとき もし E9=1(日曜日) ならば
“○” 真のとき ○
IF(AND(M10=”A”,N9=7) 偽のとき もし M10=”A” かつ E9=7(土曜日) ならば
“A” 真のとき A
IF(AND(M10=”B”,N9=7) 偽のとき もし M10=”B” かつ E9=7(土曜日) ならば
“○” 真のとき ○
IF(AND(M10=”○”,L10=”○”) 偽のとき もし M10=”○” かつ L10=”○” ならば
“A” 真のとき A
IF(N9=2 偽のとき もし E9=2(月曜日) ならば
“B” 真のとき B
M10 偽のとき M10の値を表示
)))))) 閉じる

下段の処理

下段は、空欄の処理までは同じで、シフト表示については、上段を参照して判断していきます。

入力している関数は、以下の通り。”N14”セルへ入力します。

=IF(OR(MONTH($D$5)=3,MONTH($D$5)=5,MONTH($D$5)=7,MONTH($D$5)=10,MONTH($D$5)=12),"",IF(AND(N9=7,N10="○"),"A",IF(AND(N9=7,N10="A"),"○",IF(N9=1,"○",IF(N10="A","B","A")))))

シフト条件で上段と真逆のシフトとなりますので、参照先はすべて上段になります。

コード 意味
IF(OR(MONTH($D$5)=3 ……12) もし D5 が3月…12月ならば
“” 真のとき空欄
IF(AND(N9=7,N10=”○”) 偽のとき もし N9=7(土曜日) かつ N10=”○” ならば
“A” 真のとき A
IF(AND(N9=7,N10=”A”) 偽のとき もし N9=7(土曜日) かつ N10=”A” ならば
“○” 真のとき ○
IF(N9=1 偽のとき もし E9=1(日曜日) ならば
“○” 真のとき ○
IF(N10=”A” 偽のとき もし N10=”A” ならば
“B” 真のとき B
“A” 偽のとき A を表示
))))) 閉じる

これで、年月と最初のシフトを入力するだけで、31日までの月と30日までの月の自動表示が、できるようになりました。

あとは2月末の処理ですが、思いのほか長くなってしまったので、2回に分けてお伝えします。
次回は、2月末の処理について紹介します。

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

スポンサーリンク

シェアする

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

フォローする