マイクロソフトアクセスのまとめ記事はこちら
人気ブログランキングへ
先日VBAを使ったカレンダーを紹介したと思います。
結構、無理やりVBAを使用して作ったのでシンプルさに欠けると思います。
今回は非常にシンプル。関数だけで作る方法を紹介いたします。
レイアウトは前回と同じです。
今回は「k1」に年月日を入れて「リターンキー」を押すだけです。
A1の内容は前回と同じです。
C2のセルですが「=K1-WEEKDAY(K1)+1」という関数が入っています。
=K1-WEEKDAY(K1)+1ですがK1は作成したいカレンダーの日付ですね。
しかしここでの扱いは「シリアル値」になります。
「シリアル値」というのは一度記載した記憶がありますが、一応おさらいしておきましょう。
1900年1月1日を「1」とし翌日1月2日を「2」というように1日に+1されていく値です。
ちなみに2016/12/1は「42705」になります。
確認方法は2016/12/1と入力したセルの書式設定で「標準」を選択すると「42705」になります。
WEEKDAY(K1)はK1の曜日を数字で呼び出しています。
前回のカレンダーでWEEKDAYに関して少し説明したと思いますが、
日曜日が1・月曜日が2・・・土曜日が7になります。
引数を追加すると月曜を1にすることも出来ます。
今回の場合WEEKDAY(K1)は木曜日なので「5」になります。
第一日曜日(C2)の日付取得のために「42705-5+1」という計算をして
42701という数字を得ています。
これを日付にすると2016/11/27になります。
ですから第一日曜日は2016/11/27ということが確定できます。
あとD2は「=C2+1」、E2は「D2+1」という風にしてI2まで入力。C4以降は前回と同じ。
祝日設定も前回と同じ条件付き書式で対応します。
今回新たに追加した項目として、表示したい月の前後の日付はグレー表示にしました。
第一週(I2は設定不要)と5週目・6週目に上記のような条件付き書式を設定します。
ルールの管理から新しいルールで上記のように「=month(K1)<>month(C2)」で書式設定をグレーにします。
=month(K1)<>month(C2)はmonth関数は年月日から「月」を取り出します。
K1の月とC2の月を取り出して比べます。もし違っていたら(<>)書式を実行しなさいという命令文です。
そのように設定すると上記のように11月の分と1月分はグレー表示になります。
簡単シンプルな月ごとのカレンダーでした。
前月と来月の表示を消したい場合はグレー設定を白にすればいいと思います。
タグ: エクセル,技,カレンダー