前回通常の曜日表示について紹介しました。今回の Part2 では、月末処理の方法を紹介します。
もくじ
月末の処理
今回作成する表は、セル列数をひと月分の31セルで固定しています。
したがって、30日までしかない月や2月末は、セルを空白にして対応しています。
30日までの月
31日までの月は、1月、3月、5月、7月、8月、10月、12月です。
入力フォームに入力された月がいずれかの月のとき、前月の31日を空欄にします。
OR関数を使って、 “D5” セルへ入力された年月の値を参照します。
=IF(OR(MONTH($D$5)=3,MONTH($D$5)=5,MONTH($D$5)=7,MONTH($D$5)=10,MONTH($D$5)=12),"",WEEKDAY(DATE(YEAR($D$5),MONTH($D$5)-1,DAY(N8)),1))
OR関数で、3月、5月、7月、10月、12月が入力されたときは空欄に、それ以外は “31日の曜日値” を返します。
セルの書式設定をしていますので、曜日値から文字列変換して表示されます。
注意点は、1月と8月は31日までの月が連続していますので、OR関数には含めないことです。
2月末の処理
30日が空欄になる月は、2月のみです。
条件分岐の考え方は同じで、OR関数で複数条件が必要なくなるので、簡単です。
=IF(MONTH($D$5)=3,"",WEEKDAY(DATE(YEAR($D$5),MONTH($D$5)-1,DAY(M8)),1))
“D5” セルの値を参照して、3月が入力されていれば空欄、それ以外は “30日の曜日値” を返します。
2月29日の処理とうるう年の判定
29日は、通常年であれば空欄で良いのですが、うるう年には表示させておく必要があります。
日付と同様、最も簡単なうるう年の判定法を使って、処理しています。
=IF(MONTH($D$5)=3,IF(TEXT(DATE(YEAR($D$5),3,1)-1,"d")="29",WEEKDAY(DATE(YEAR($D$5),MONTH($D$5)-1,DAY(L8)),1),""),WEEKDAY(DATE(YEAR($D$5),MONTH($D$5)-1,DAY(L8)),1))
“D5” セルの値が3月ならば、うるう年判定をして “29” が返ってくれば “29日の曜日値” を返し、”29″ でなければ空欄、3月以外は “29日の曜日値” を返す、という内容になっています。
うるう年の判定法は、日付の回に紹介した方法です。
【Excel2010】最小限の入力で自動作成するシフト表 第3回 日付Part2 月末処理【関数】
基本的な流れは、日付の時と同様です。
曜日の表示方法に「WEEKDAY関数」を使って、セルの書式設定で文字列変換しているところがポイントです。
次回からは、いよいよ本題のシフト自動入力を紹介します。
【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 最終回【関数】