 |
 |
エクセルでカレンダー【月末を工夫編】 |
 |
 |
まずは「年」と「月」を入力する箇所を作ります。
この時、後の作業のためにA列には入力しないようにしておきます。

そして、「月」を簡単に変更できるよう、
リストの[元の値]を直接入力の技を使って
1〜12までの数値を選択できるリストを作ります。

今度は先程作ったセルで指定した年月の「一日」が入るセルを作ります。

B1番地の「年」、D1番地の「月」の1日ですから、
各セルの数値をドッキングして日付データにしてくれるDATE関数を使います。
引数の指定は下のようになります。

これで指定した年月の1日が 表示されるようになりました!

今度はその下のセルに 2日が入るセルを作ります。
上のセルの1日後が 2日となるわけですから、 上のセルに1を足せばOKです。
あとはこの数式をオートフィルで31日までコピーしておきます。
|
 |
 |
 |
 |
月末の不満を解決! |
 |
 |
ここまでの作業が正しく動くか確認してみます。
D1番地の「月」を「2」に変更すると、A列の日付はちゃんと2月のものに変わります!

ところが月末の日付の部分を見てみると、不満が!
31日まである月では問題は起こりませんが、
こんな風に28日で終わってしまう月や 30日で終わってしまう月は
残りのセルが翌月のものになってしまいます。
そこでA列に入っている日付が翌月のものだったら
何も表示せず空欄となるよう、B列に数式を入力していきます。

早速B4番地に数式を入力します。

A4番地の日付が翌月のものかどうかは
A4番地の「月」の部分とD1番地の「月」を比べれば判断できます。
但し、A4番地は日付データとなっているので、 この日付データから「月」の部分だけを取り出さないと比較できません。
この「月」だけを取り出すのがMONTH関数。
MONTH関数で取り出したA4番地の「月」が、D1番地より大きい時には
A4番地には翌月の日付が入っているということになりますから、
空欄を表示、
そうじゃない時にはA4番地の日付をそのまま表示するよう設定します。
そう、IF関数です。
そしてこの考えをまとめると、このようになります。

この時、D1番地は後にオートフィルをした時にずれないよう、
絶対参照をかけるのもお忘れなく。

これで数式が入力できました!
でも、なんか表示がおかしい!
これは単に表示形式がおかしいだけ。
日付の表示形式を設定し直しておけば大丈夫です。
これで日付は完璧!
あとはこの数式をオートフィルで 31日分コピーしておきます。
A列に翌月の日付が入っているセルは ちゃんと空欄になっています!
|
 |
 |
 |
 |
曜日を表示させる |
 |
 |
今度はC列に曜日を表示させます。
B列の日付を元に WEEKDAY関数を使って 曜日を求めます。
但し、WEEKDAY関数は単体で使うと答を曜日を示す数字で表示してしまいますので
曜日、どうやって表示する【関数編】のように
CHOOSE関数とWEEKDAY関数を使って「日・月・火・・・」という曜日を表示させます。
そうするとC4番地に曜日を表示させるには
=CHOOSE(WEEKDAY(B4,1),"日","月","火","水","木","金","土")
|
となります。
ですが、曜日を判断するための 日付が入っているB列は
月末を工夫するために 空欄になっているセルもあるわけです。
B列の日付のセルが空欄になっていた場合には
この曜日のセルも空欄にしなければなりません。やはりIF関数を使います。


これで曜日が表示されました!
あとはこの数式をオートフィルで 31日分コピーしておきます。
B列の日付が 空欄になっている場合には
曜日も空欄になっています。
月を切り替えて
他の月を表示しても 日付と曜日がうまく表示されます!
|
 |
 |
|
 |
 |
 |
 |
スポンサードリンク |
|
 |
 |
 |
メルマガ&INFO |
 |
 |
|
 |
 |
 |
HOME
»
Office活用アイディア・脳みその素
»
エクセルでカレンダー
»
月末を工夫編
|
|
 |
|