【Excel】最小限の入力で自動作成するシフト表 第3回
Tuesday,April 11,2017

【Excel】最小限の入力で自動作成するシフト表 第3回

Excel_shift_eye

前回基本的な日付の処理について紹介しました。今回の Part2 では、月末処理の方法を紹介します。

月末の処理

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

30日までの月

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

Excel_shift_day_004

年月を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日の処理は、簡単です。

Excel_shift_day_005

30日が空欄になる月は、2月のみです。

=IF(MONTH($D$5)=3,"",DATE(YEAR(D5),MONTH(D5)-1,30))

"D5" セルの値を参照して、3月が入力されていれば空欄、それ以外は "30" を表示します。

2月29日の処理とうるう年の判定

29日は、通常年であれば空欄で良いのですが、うるう年には表示させておく必要があります。

Excel_shift_day_006

ここでは、最も簡単なうるう年の判定法を使って、処理しています。

=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" を表示、という内容になっています。

これでシリアル値を利用した日付の表示が完成しました。シリアル値を利用することで、曜日を判別することができるようになります。 次回は、曜日の自動入力について紹介します。

posted by taks at 19:56 | Comment(0) | TrackBack(0) | PC
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.seesaa.jp/tb/448927891