エクセルで31日がない月を自動で非表示にする方法|IF関数でカレンダーを見やすく!

エクセルで31日がない月を自動で非表示にする方法|IF関数でカレンダーを見やすく!

エクセルでカレンダーやガントチャートを作成する際、**「31日がない月なのにセルに表示されてしまう」**といったお悩みはありませんか?

たとえば2月や4月など、31日が存在しない月でも自動生成した日付が表示されてしまうと、表の見た目が乱れたり、誤解を招いてしまったりすることがあります。

毎回手動で31日を削除するのは面倒ですが、IF関数を使えば「その月に31日があるかどうか」を自動判定して、不要な日付を非表示にすることができます。

この記事では、初心者の方にもわかりやすく、**IF関数を使って「31日が存在しない月だけ自動で非表示にする方法」**を解説していきます。

31日がない月はどう扱う?|エクセルでのカレンダー作成の悩み

2月や4月に「31日」が表示されてしまう問題

エクセルで1日〜31日までの日付を自動的に表示するカレンダーを作ると、すべての月に31日がある前提で作られてしまうことがあります。
しかし、実際には31日が存在しない月もありますよね?

  • 2月 → 28日または29日まで

  • 4月、6月、9月、11月 → 30日まで

このような月でも、31日という「存在しない日付」が表に表示されてしまうと、利用者が混乱したり、入力ミスにつながったりする恐れがあります。


非表示にしないと見栄えや誤解を招くことも

たとえば予定表やガントチャートで31日に予定が入っていないように見えても、そもそもその日は存在しない可能性があります。
それなのに空欄のセルが残っていると、**「予定が未入力なのか?」「何か忘れているのか?」**と誤解されることも。

また、見た目上も月ごとの列の幅がバラバラになるなど、レイアウトの統一感が崩れてしまう原因にもなります。


毎回手作業で削除するのは非効率

「じゃあ、31日がない月だけ手動で削除すればいいのでは?」と思われるかもしれません。
確かにそれも一つの方法ですが、毎月手作業で修正するのは手間がかかりますし、ミスの原因にもなりかねません。

こういった繰り返しの作業は、エクセルの関数で自動化するのがベストです。

次章では、IF関数を使って**「31日が存在しない月だけ自動で非表示にする方法」**を具体的にご紹介していきます。

IF関数で「31日がない月」を自動で非表示にする方法

基本のIF関数で「日付が存在しないか」を判定する

エクセルでは、「ある月に31日があるかどうか」をIF関数で判定することができます。
ポイントは、その月の最終日が何日かを計算すること。
これには DATE 関数を使って簡単に判別できます。

たとえば、次のような数式です:

=IF(DAY(DATE(年セル, 月セル+1, 0))<31, "", 31)

↓実際のカレンダーでの使用例を以下に示します。
 5月(31日あり)では末尾に「31」が表示されますが、6月(30日まで)では自動で非表示になっています。

関数利用例:=IF(DAY(DATE(A5,C5+ 1, 0))<31, “”, 31)

31日非表示用の関数例

この数式の意味:

  • DATE(年, 月+1, 0):指定した月の「前月の末日」=その月の最終日を取得

  • DAY(...)<31:その月の最終日が31日未満なら、空白(””)を返す

  • 31:31日がある月の場合のみ「31」という値を表示

つまり、31日が存在しない月ではセルに何も表示されないようになります。


実際にカレンダーに組み込む方法(日付リストや曜日との連携)

このIF関数を、カレンダー表の「31日」列にだけ適用します。
年や月のセル(例:B1セル=年、B2セル=月)を参照する形にすれば、月を変えるだけで自動的に31日セルの表示が切り替わるようになります。

例:

=IF(DAY(DATE($B$1, $B$2+1, 0))<31, "", DATE($B$1, $B$2, 31))

IF関数で実際に「31日を非表示にする」方法を試してみた結果です。
月を5月にすると 2025/5/31 が表示されますが、6月にすると自動で空欄になり、日付が存在しないことが反映されます。
※関数を設定したセル(画像黄色のセル)の表示設定は日付で設定しています。

31日非表示の例2yyyy/m/d形式で表示する場合

曜日と連携する場合は、TEXT 関数と組み合わせることで次のような表示も可能です:

=IF(DAY(DATE($B$1, $B$2+1, 0))<31, "", TEXT(DATE($B$1, $B$2, 31),"d(aaa)"))

↓関数の実行例です。
31日非表示例3TEXT関数を利用して曜日も表示

TEXT関数について

TEXT関数は、日付や数値などの値を、指定した書式で文字列として表示する関数です。
今回の例では、日付「31日」を「曜日つきの形式(31(土))」で表示するために使っています。

TEXT(DATE(年, 月, 日), "d(aaa)")
  • "d":日だけを表示(たとえば「31」)

  • "(aaa)":曜日をカッコつきで表示(たとえば「(土)」)

  • これらを組み合わせて → 31(土) のような表現になります

ポイント:

通常の DATE関数だけでは「2025/5/31」のような形式になりますが、
TEXT関数を使えば、「見やすく・印刷しやすい」日付表記にカスタマイズすることができます。


表示形式で「空白」に見せる工夫(”” の使い方)

IF関数で**””(空文字)を返すことで、見た目上は空白になります。**
この空白にする工夫により、表全体のレイアウトを崩さずに、**「存在しない日だけ非表示」**という自然な表示が実現できます。

注意点としては、“” は「空白」とは異なり、数式としては“空文字”が入っている状態なので、数式の有無を判定する場合には考慮が必要です。


他の日付(30日や29日)への応用も可能?

同じ考え方で、**「2月に30日や29日があるかどうか」**を判定することも可能です。

たとえば:

=IF(DAY(DATE(年セル, 月セル+1, 0))<30, "", 30)

↓29日や30日も同じ仕組みで非表示にできます。
 特に2月のようにうるう年・平年によって29日の有無が変わる月では、
 IF(DAY(DATE(年, 月+1, 0))<29, "", 29) のように設定すれば、柔軟に対応できます。

30日を非表示にする例

このように、必要な日数だけを条件に応じて柔軟に表示切り替えできるので、どんな月にも対応できるカレンダーが作れます。


●ガントチャートや勤怠管理表での活用例

この方法はカレンダー以外にも、日付ごとに色を塗ったり、作業スケジュールを管理するガントチャートや勤怠表でも便利です。

  • 31日がない月にはセルを空白にしてレイアウト維持

  • 作業予定や出勤情報を日数に応じて自動反映

  • エラーや見落としを防止

このように、IF関数を使うだけで、実務に役立つ「柔軟で見やすい表」を作ることが可能になります。

↓月末までの列を自動で調整しておくと、
 存在しない日付に誤って入力したり、見栄えが崩れるのを防ぐことができます。

ガントチャート作成例シフト表

まとめ|IF関数で31日を自動で非表示にすれば、カレンダー作成がもっとラクに!

エクセルでカレンダーやガントチャートを作成する際、**「31日が存在しない月でも表示されてしまう」**という問題は意外とよくあります。

そんなときは、IF関数とDATE関数を組み合わせて、31日がない月だけ空白にする方法を使えば、
毎回手作業で修正する必要がなくなり、作業の効率化にもつながります。

今回ご紹介した方法を活用すれば、月の変化に自動で対応する見やすい表を作ることができ、
予定表や勤怠表など、さまざまなシーンで応用が可能です。

ぜひ、ご自身の業務や日々の管理に取り入れてみてくださいね。

【関連記事】

※外部リンク※