前回基本的な日付の処理について紹介しました。今回の 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),"",DATE(YEAR(D5),MONTH(D5)-1,31))
OR関数で、3月、5月、7月、10月、12月が入力されたとき空欄に、それ以外は “31” を表示します。
注意点は、1月と8月は31日までの月が連続していますので、OR関数には含めないことです。
2月末の処理
30日の処理は、簡単です。
30日が空欄になる月は、2月のみです。
=IF(MONTH($D$5)=3,"",DATE(YEAR(D5),MONTH(D5)-1,30))
“D5” セルの値を参照して、3月が入力されていれば空欄、それ以外は “30” を表示します。
2月29日の処理とうるう年の判定
29日は、通常年であれば空欄で良いのですが、うるう年には表示させておく必要があります。
ここでは、最も簡単なうるう年の判定法を使って、処理しています。
=IF(MONTH($D$5)=3,IF(TEXT(DATE(YEAR($D$5),3,1)-1,"d")="29",DATE(YEAR(D5),MONTH(D5)-1,29),""),DATE(YEAR(D5),MONTH(D5)-1,29))
IF関数が複数重なって少しわかりにくいですが、うるう年の判定法として、TEXT関数を使った判別法を用いています。
TEXT(DATE(YEAR($D$5),3,1)-1,"d")="29"
DATE関数で「”D5″ セルに入力された年の3月1日」のシリアル値を求め、そこから1日引いた日付をTEXT関数で文字列化します。その値が29かどうかを判断する方法です。
通常年であれば28が、うるう年であれば29が返ってきます。
全体としては、 “D5” セルの値が3月ならば、うるう年判定をして “29” が返ってくれば “29” を表示、”29″ でなければ空欄、3月以外は “29” を表示、という内容になっています。
これでシリアル値を利用した日付の表示が完成しました。シリアル値を利用することで、曜日を判別することができるようになります。
次回は、曜日の自動入力について紹介します。
【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 最終回【関数】