11/18/2013

Excel。月末28~31日に対応して日付を自動表示するカレンダー その1


Excel。
月末28~31日に対応して日付を自動表示するカレンダー 
その1

ユーザー定義書式+TEXT関数+条件付き書式


Excel。毎月のスケジュール管理などで、良く作るカレンダー類。
そこで、いつも面倒なのが、
月末が28日なのか29日なのか30日なのか31日なのかによって、
数式やら文字やらを削除する。あるいは、文字を白で塗るなんてことも…

そこで、今回は、自動的に判断して、翌月になったら空白にするカレンダーを作ってみましょう。

A2に2013を B2に9を入力します。このA2とB2にそれぞれ、年と月を入力したら、
自動的に日付に曜日も変わるカレンダーをつくっていきます。
まずは、A2とB2の表示形式を変更していきます。

2013と入力したA2をクリックして、
セルの書式設定ダイアログボックスを表示して表示形式のユーザー定義を選択します。

種類のボックスに、G/標準と表示されていますので、その後ろにカーソルをいれて、
”年”と入力します。
そしてOKボタンをクリックすると、
2013年とA2が表示されます。普通に2013年と入力してしまうと、
文字になってしまい、数字として使用することができませんので、
ユーザー定義書式というテクニックをよく使いますので、覚えておくといいかと。

同じように、B2をクリックして、9月と表示するように、
G/標準の後ろに”月”を入力して、9月と表示されることを確認しましょう。

続いて、日付を作っていきます。
A4に日付。B4に曜日と入力して、A5にDATE関数で日付を作成していきましょう。
A5をクリックして、DATE関数のダイアログボックスを表示します。

年には、A2を入力します。
月には、B2を入力します。
日には、1を入力します。
OKボタンをクリックすると、9月1日と表示されます。
最初は当然1日なので、日には、1を入力しております。
年と月はセル番地を参照していますので、そのセルを替えることによって、
自動的にその年月の1日を作ることができます。

つづいて、A6をクリックして、=A5+1と入力します。
それによって、A5の翌日、つまり9月2日を作ることが出来ます。
オートフィルを使って、A35までコピーしましょう。

A35には、10月1日と表示されますが、
これは後程、表示されないようにアレンジしますので、そのままにしておきます。

次は、曜日を作っていきます。これは、以前紹介しました、TEXT関数を使います。
B5をクリックして、TEXT関数のダイアログボックスを表示します。

値には、A5を入力します。
表示形式は、”aaa”と入力します。
OKボタンをクリックすると、曜日が表示されますので、
オートフィルで連続コピーをして、B35まで算出しましょう。
このように、なりますね。

さて、本題はこれから、このままだと、10月1日が表示されてしまっていますね。
別にこれでも構わないのですが、やはり、9月は9月にしたい訳でして。

そこで、どうしたらいいのかを考えてみましょう。
問題になるのが28日以降ですね。
28日までは、上のセル+1でいいのですが、29~31日は月によって変わるわけですね。
なので、対象となるセルは、A33:A35までとなります。

さて、どのように判断させたらいいでしょうか?
注目すべきは月が替わるかどうか、すなわち、月が同じか、それより大きいのか?
を判断させればいいというのがわかります。

なので、A33は、
「もし、A33の月は、A32の月と比べて、大きければ、空白。そうでなければ、+1」する数式を
作ってあげればいいわけですね。

それでは、29日が入っている、A33をクリックして、数式を削除して、
IF関数のダイアログボックスを表示しましょう。

論理式は、月を比べる数式になりますので、MONTH関数をネストしていきます。
それでは、論理式のボックスをクリックして、MONTH関数のダイアログボックスを表示しましょう。


シリアル値は、A32+1と入力します。
これでまず、A32の翌日の月を算出することができます。
IF関数にいったん戻りますので、数式バーのIFをクリックして、
IF関数のダイアログボックスに戻りましょう。

論理式は、=IF(MONTH(A32+1)となっていますので、
>を入力した後に、再度、MONTH関数のダイアログボックスを挿入します。

今度は、A32とシリアル値に入力して、IF関数のダイアログボックスに戻りましょう。
これで、論理式は完成です。

論理式は、MONTH(A32+1>MONTH(A32)
真の場合は、””
偽の場合は、A32+1
と入力してOKボタンをクリックしましょう。
この数式をオートフィルで、A35まで連続コピーしてみましょう。

そうすると、10月1日が表示されずに、空白になりましたね。
これで、翌月になった場合は、空白にすることが出来たと思いきや、
B2の9月を2月に変更してみましょう…。
残念ながら…。

ここから先は、その2で書きたいと思います。