Excel使いこなしの基礎と応用


Excelで万年カレンダー仕様の予定表を作る(3)

2月のカレンダーでは(29)30・31日を、小の月では31日を非表示にし、大の月では表示させるよう数式を使って自動切り替えの設定を行います。使うのはIF関数・DAY関数・DATE関数です。

2月の予定表 ※下の画像をクリックで拡大表示
カレンダー2月分サンプル

スケジュール表作成のプロセス


Step3.関数を使って29・30・31日を自動表示切替

step-arrow

解説は要らない人は、数式をコピペ!
=IF(DAY(DATE($A$1,$A$2,29))=29,29,””)
=IF(DAY(DATE($A$1,$A$2,30))=30,30,””)
=IF(DAY(DATE($A$1,$A$2,31))=31,31,””)
上からA31、A32、A33セルへ
入力してね

IF関数の論理式にDAY関数、そのシリアル値にDATE関数を入れて構成

IF関数は論理の関数で、「もし、この論理通りならこう、違っていたらこう」という指定が行えます。

ここでは、「もし、2016年1月29日が存在したら、日にち欄に29の値を表示する。存在しなかったら、空欄にする」と指定します。

スポンサーリンク

では、まず、「29」の日にちが入る「A31」セルを選択して、
29日の入るセルを選択
数式」タブ「関数ライブラリ」の「論理▼」から「IF」をクリックして下さい。
関数ライブラリの論理リストからIFを選ぶ
IF関数の引数」ダイアログボックスが開いたら一番上の「論理式」ボックスにカーソルが点滅していることを確認して、
If関数の引数ダイアログボックス
名前ボックス▼(画面の上左端 リボンを挟んで「ファイル」タブの真下にある)からドロップダウンさせた関数名リストの「DAY」をクリックします。
DAY関数をクリック

※「DAY」がなかったら、最下部にある「その他の関数」をクリックして「関数の挿入」ダイアログ「関数の分類」を「日付/時刻」にして探して下さい。関数の挿入ダイアログで日付/時刻を選んでDAYを探す

新たに「DAY関数の引数」ダイアログボックスが出たら、
DAY関数の引数ダイアログボックス
もう一度「名前ボックス▼」から、今度は「DATE」をクリックします。
DATE関数をクリック
DATE関数の引数」ダイアログボックスで年・月・日を指定します。

「DATE関数の引数」一番上の「年」にカーソルを置いて、A1セル(西暦の数字が入ったセル)をクリック、「年」ボックスに「A1」と表示されるので、キーボードのF4キーを1度叩いて絶対参照「$A$1」に変更します。 ▶絶対参照について分かりやすく
年の引数にカーソルを置いてA1セルをクリック

次は2番目の引数「月」ボックスにカーソルを置いて、A2セル(月の数字が入ったセル)をクリック、「月」ボックスに「A2」と表示されるので、キーボードのF4キーを1度叩いて絶対参照「$A$2」に変更します。
月のの引数にカーソルを置いてA2セルをクリック

「日」のボックスには半角数字で「29」と入力します。
ここで「OK」は押さず、ダイアログが開いたままの状態で…
DATE関数の引数を全て入力
数式バー(名前ボックスの右隣)に表示されている数式の「IF」をクリックします。
数式バーのIFをクリック
すると、「IF関数の引数」ダイアログボックスに戻ります。

論理式」に「DAY(DATE($A$1,$A$2,29))」という数式が入っていますね?

この式を噛み砕いた文章で言うと、「DATE関数でシリアル値(2016/1/29)を取得し、DAY関数でそのシリアル値(2016/1/29)から日にちの数字を取り出しました」になります。

でも、この文章にはIF関数が求める「論理式」=「もし、~なら」が欠落しています。だから、何をどーしたいの?って感じ。

そこで、IF関数が求める論理を組み立てます。
DAY(DATE($A$1,$A$2,29))」の末尾にカーソルを置き「=29」を加えます。
IF関数の引数「論理式」を修正
DAY(DATE($A$1,$A$2,29))=29」という論理式は「DATE関数でシリアル値(2016/1/29)を取得し、DAY関数でシリアル値(2016/1/29)から取り出した日にちの数字が、29なら…」という意味になります。

もう少し詳細に言うと「シリアル値(2016/1/29)が正しい値なら「29」という数字が返されるはず。…で、もし、ちゃんと「29」が返されていたら…」というIF文になるわけです。

その答えが「真の場合=肯定=29が返されてます」なら「29」と数字を表示、
偽の場合=否定=この年月日は存在しません」なら「空欄=""」と設定します。
IF関数の引数を全て入力
これで数式は完全なものになったので、「OK」します。

最終的な式は「=IF(DAY(DATE($A$1,$A$2,29))=29,29,"")」です。

DATE関数でシリアル値(2016/1/29)を取得し、DAY関数でそのシリアル値(2016/1/29)から取り出した日にちの数字が、もし「29」なら、「29」と表示。違っていたら、「空欄」のまま

スポンサーリンク

この数式の入ったA31セルをA33セルまでフィルコピーし、A32セルの数式の29を30に、A33セルの数式の29を31に変えます。(それぞれ数式バーをダブルクリックして編集モードにして修正して下さい)
30日と31日の数式を修正

データの入力規則で月の数字をリスト化する

月の数字の入った「A2」セルを選択し、「データ」タブの「データの入力規則」ボタンをクリックします。
データの入力規則ボタン
入力値の種類」で「リスト」を選択、「元の値」に「1,2,3,4,5,6,7,8,9,10,11,12」と入力して「OK」します。数字は半角カンマで区切って下さい。
データの入力規則で月のリストを設定
A2セルをクリックすると「▼」が現れ、そこからドロップダウンリストで月が選べるようになります。
月のドロップダウンリスト

試しに、2月や小の月を選んで、29日・30日・31日の表示非表示が適正にスイッチされるかどうか確認してみて下さい。
2月と4月のカレンダー表示

▶次は、DATE関数と書式設定の表示形式で曜日を表示させます

Officeで作れるもの