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

スポンサーリンク







シェアする

フォローする