前回は曜日を表示させるための関数について紹介しました。
前回の記事で課題として残っていた以下の3つを検討しましょう。
- 日付は俗に言う「西向く士(さむらい)」以外は31日終わり。
- 4年に1回のうるう年を忘れてはいけない。
- 1~28日まではどの年月でも絶対に発生する
クリアするためにこんなことを考えました。
- IF文で28日以降の表示を準備出来るかも
- うるう年は年について計算をする事で乗り切れるかも
- 1~28日はデフォルトで良いのでは?
これをもとに考えていきましょう。
今回は日付を表示させます。日付と曜日の関係をおさらいしておきます。
前回も提示しました曜日を表示させるためにセルB8に書かれている関数です。
DATE関数の中にいる「$A8」が日付です。
これで日付がないと曜日が表示されないので関連付けがある事が分かりますね。
改めて書きますが日付はセルA8から始まります。セルA9方向に日付が続きます。
1日~28日はどの月でも必ずあるのでセルに直書きしています。
セルの書式設定で「ユーザー定義」を選択し 「#”日”」を選択するとセルには数値だけ入力しても「○○日」と表示されるようになります。
デフォルトは 「##”日"」かも?どちらでも結果は一緒です。
では29日以降のことを考えましょう。
まず動画をみてください。うるう年の件についても解決させています。
動画で説明に使った日程表の欄外に書いたネタの画像もつけておきます。
29日が表示されることになるセルA36は以下のような式が入力されています。
=IF(AND(B5=G8,H5=""),"",29)
言葉で説明するとセルB5の手入力する月と欄外の2という数字がイコールかつセルH5に「うるう年」が表示されてないときは空欄。それ以外は「29」を表示させるようにしています。
「うるう年じゃない2月」以外は29日は必ず発生しますよね。
次に30日が表示されることになるセルA37は以下のような式が入力されています。
これはシンプルです。2月以外は30日は必ず発生するのでそれを書いたまでです。
最後に31日が表示されることになるセルA38は以下のような式が入力されています。
セルB5の手入力する月が1、3、5、7、8、10、12月の時は31日を表示させてそれ以外は空欄を表示させるようにしています。
西向く士(さむらい)以外は31日を表示させているという事です。
これでセルB4、B5に年月を入力すると適切な日付が表示されて日付に対して曜日が表示されるようになりました。
これで課題もクリアできたと思います。
最後は条件付き書式で土日にあたるセルに色を付けるだけです。
これは当初の構想段階では検討していませんでしたがあった方が良いなと思い最後に追加した仕様です。
最初に思いつかなくてもやってくうえで仕様を柔軟に変えていく、変えていけるようにガチガチに作りこまない方が後々良いこともあります。参考にしてください。
条件付き書式については次回説明します。