エクセルでカレンダーやガントチャートを作成する際、**「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)
この数式の意味:
-
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月にすると自動で空欄になり、日付が存在しないことが反映されます。
※関数を設定したセル(画像黄色のセル)の表示設定は日付で設定しています。
曜日と連携する場合は、TEXT 関数と組み合わせることで次のような表示も可能です:
=IF(DAY(DATE($B$1, $B$2+1, 0))<31, "", TEXT(DATE($B$1, $B$2, 31),"d(aaa)"))
↓関数の実行例です。
TEXT関数について
TEXT
関数は、日付や数値などの値を、指定した書式で文字列として表示する関数です。
今回の例では、日付「31日」を「曜日つきの形式(31(土))」で表示するために使っています。
-
"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)
のように設定すれば、柔軟に対応できます。
このように、必要な日数だけを条件に応じて柔軟に表示切り替えできるので、どんな月にも対応できるカレンダーが作れます。
●ガントチャートや勤怠管理表での活用例
この方法はカレンダー以外にも、日付ごとに色を塗ったり、作業スケジュールを管理するガントチャートや勤怠表でも便利です。
-
31日がない月にはセルを空白にしてレイアウト維持
-
作業予定や出勤情報を日数に応じて自動反映
-
エラーや見落としを防止
このように、IF関数を使うだけで、実務に役立つ「柔軟で見やすい表」を作ることが可能になります。
↓月末までの列を自動で調整しておくと、
存在しない日付に誤って入力したり、見栄えが崩れるのを防ぐことができます。
まとめ|IF関数で31日を自動で非表示にすれば、カレンダー作成がもっとラクに!
エクセルでカレンダーやガントチャートを作成する際、**「31日が存在しない月でも表示されてしまう」**という問題は意外とよくあります。
そんなときは、IF関数とDATE関数を組み合わせて、31日がない月だけ空白にする方法を使えば、
毎回手作業で修正する必要がなくなり、作業の効率化にもつながります。
今回ご紹介した方法を活用すれば、月の変化に自動で対応する見やすい表を作ることができ、
予定表や勤怠表など、さまざまなシーンで応用が可能です。
ぜひ、ご自身の業務や日々の管理に取り入れてみてくださいね。
【関連記事】
- Excelで名簿作成を効率化する方法まとめ|氏名・住所・電話番号の整理術をやさしく解説
- Excelの住所録を整える!郵便番号・電話番号のハイフン&0消失対策まとめ
- エクセルでノートを作る方法|印刷して使える方眼紙・ルーズリーフの作り方を解説!
※外部リンク※