下図は、赤枠のセル B1 にカレンダーの開始日を入れると自動的に日付が埋まって、1 カ月分のカレンダーができあがる、という例です。

今回は画像が縦長になりすぎるので、月の前半と後半の 2 つに分けてありますが、もちろん分けなくてもよいです。

たとえば、セル B1 の開始日に 2022/1/1 といれたときと、2022/2/1 をいれたときでもちろん結果が変わるのですが、2月のカレンダーの後半部分を見ると、2 月は 28 日までしかないので 3 月の日付も表示されていることがわかります。

開始日を入れるだけで自動的に日付が埋まるようにしたいけれど、翌月の日付は表示したくないというとき、

「必要な日付だけを入力 (表示) する仕組みを作る」 という考え方もあるでしょうし、「(本当は日付があるけれど) 不要な日付を非表示にする」 という考え方もあるでしょう。

前者って、自動でセルに必要な情報を書き込まなければいけないので、意外と難しいんですよ。ということで、ここでは後者の「(本当は日付があるけれど) 不要な日付を非表示にする」を実現するために、条件付き書式を使ってこんな風に↓翌月の日付が表示されないようにしてみます。

ここでのカレンダーの作り方

仕組みが想像できる方は読み飛ばしてもらってよいです。今回の例がどのように作られたワークシートを使うのかを簡単にご紹介しておきます。いろんな作り方があるので、必ずしもここで紹介する方法だけが正解なわけではありません。

セル B1 に、作成したいカレンダーの開始日を入力するように準備しています。もちろん西暦も含めてシリアル値で入力します。

セル B1 の日付の “月” を表示するための MONTH 関数の数式をセル B2 に作成しています。

わかりやすいように表示形式を使って「x月」となるようにしてありますが、「1」とか「2」などの月だけ表示されている状態でも動きに問題はありません。

今回作成する条件付き書式のルールの数式では、セル B2 の “月” の値が比較に使われます。用意しておくほうがわかりやすいでしょう。

カレンダーの初日には、セル B1 に入力されている日付が表示されるように数式を作ってあります。

カレンダーの 2 つ目のセルには、初日のセル +1 という数式によって翌日が表示されるようにしています。

3 つ目以降のセルは 2 つ目のセルをコピーして、それぞれが 1 つ上のセル +1 の日付が表示されるようにしています。

(カレンダーを前半と後半で二分割していなければこの処理は要らないのですが)
後半の初日 (16日) のセルには、15 日のセル +1 となる数式を作成しています。

もちろん、「=DATE(YEAR(B1),MONTH(B1),16)」のように、セル B1 の日付を使って 16 日の日付を準備しても OK です。

17 日以降のセルには、16 日のセル +1 という数式によって翌日が表示されるようにしています。前半と同じように、以降のセルはこのセルをコピーして、それぞれが 1 つ上のセル+1 の日付が表示されるようにしています。

条件付き書式のルールだけ知りたい方へ

細かいところを読み飛ばしたい方向けにルールの内容を書きます。

後半の日付が入っているセル範囲に、「=MONTH(D6)<>$B$2」を条件とし、「;;;」の表示形式を書式とした条件付き書式を設定してください。(この数式を見ただけではわからない、詳細を知りたい、という方は、「ルールで使う数式を準備する」以降をご覧ください。)

ルールで使う数式を準備する

翌月の日付は表示したくないので、カレンダーの日付の “月” が、セル B2 と等しければ日付を表示し、等しくなければ日付を表示しない、という制御をします。これを条件付き書式でやろうとしています。

条件付き書式は、数式の結果が TRUE になったときに適用されるので、[日付] 列の “月” がセル B2 と等しくないときに TRUE が返る数式が必要です。

カレンダー横の、16 日と同じ行のセルに次の数式を作ってテストします。等しくないときに TRUE を返すための比較演算子は「<>」です。

=MONTH(日付のセル , <> , セル B2)

という数式にしたいので、ここでは、

=MONTH(D6 <> $B$2)

とします。セル B2 が絶対参照になっているのは、のちほどセルを下方向へコピーすることを想定しているためです。

数式を作成したセルを下方向へコピーします。ここでは 1 月のカレンダーを使っているのですべての数式で FALSE が返っています。

2 月のカレンダーの場合は、最後の 3 つのセルに 3月の日付が表示されているため TRUE が返ります。

条件付き書式のルールを作成する

TRUE が返っている、すなわち 3 月の日付が表示されているセルの値を「非表示にするための」書式を条件付き書式で設定します。

  1. あとでルールの作成時に貼り付けて使用するため、先ほど作成した数式をコピーします。“セルを” ではなく、セルの中の “数式を” コピーしておきます。
     
    コピー後は、[Enter] キーなどを押して、セルを確定しておきましょう。編集状態のままでは次に進めません

  1. 条件付き書式を設定するセル範囲を選択して、リボンの [ホーム] タブの [スタイル] グループの [条件付き書式] をクリックし、[新しいルール] をクリックします。

  1. [新しい書式ルール] ダイアログ ボックスで [数式を使用して、書式設定するセルを決定] を選択し、数式を記述するセルにコピーしておいた数式を貼り付けます。
     
     数式を記述するセルの中をクリックして、[Ctrl] + [V] で貼り付けられます。
     
     数式を貼り付けたら [書式] をクリックします。

  1. [セルの書式設定] ダイアログ ボックスの [表示形式] タブの [分類] で [ユーザー定義] を選択し、[種類] に「;;;」 (半角のセミコロンを 3 つ) 入力して [OK] をクリックします。

    表示形式は、1 つの表示形式の中に「正の値の場合 ; 負の値の場合 ; ゼロの場合 ; 文字列の場合」のように、セミコロンを使って 4 つのケースを指定できます。このいずれのケースも指定せずにセミコロンだけを指定することで非表示とすることができます。
     
     「フォントを白にすればいいんじゃないの?」 という方。はい、それでもいいかな。どうかな。背景色によるし、あまりスマートじゃない気がするので私はやらないかな。
  1. [新しい書式ルール] ダイアログ ボックスの [OK] をクリックします。

  1. 数式の処理結果が TRUE、すなわち翌月の日付は非表示になります。
    これでやりたいことができました。

  1. セルに作成した数式は削除しても問題ありません。右のほうに他の表がないのなら、列ごと削除してもよいです。


    ルールで使用する数式は、きちんと数式の構造を理解してスムーズに入力ができるのなら、あらかじめワークシートに作らずに直接ダイアログ ボックスに入力してもよいです。ただ、ワークシート上で動きを確認しておいてから利用したほうがミスを減らせます。急がば回れ、です。

    カレンダーの作り方は様々です。「セル B1 の開始日とか、セル B2 の月を準備しなくてもできるのでは?」と思った方。できますよ。チャレンジしてみてください。

    石田 かのこ