【Excel】「完全自動カレンダー」を関数だけで作る方法

エクセルで毎月の予定表やカレンダーを作成する際、いまだに「先月のシートをコピーして、日付を1つずつ打ち直す」という作業をしていませんか?

最新のエクセル関数を活用すれば、年と月を書き換えるだけで、日付・曜日・祝日、さらには前後の月のグレーアウトまで、すべてが瞬時に切り替わる「シート」を作ることができます。


自動カレンダー作成に必要な「4つの関数」

まずは、今回使用する関数を紹介します。これらを組み合わせることで、複雑な計算をエクセルに丸投げできます。

① DATE関数

年、月、日の3つの数字を組み合わせて「日付データ」に変換する関数です。

例:DATE(2026, 1, 1) と入力すれば、エクセルはそれを「2026年1月1日」という日付として認識します。

② WEEKDAY(ウィークデイ)関数

その日が「何曜日か」を判定し、1(日曜日)から7(土曜日)までの数字で返してくれる関数です。カレンダーの開始位置を決めるために必須となります。

③ SEQUENCE(シーケンス)関数

指定した行数と列数の中に、連続した数字を一気に流し込む関数です。

「1つのセルに数式を入れるだけで、隣のセルまで数字が溢れ出す」というスピル機能を利用します。

④ MONTH(マンス)関数

日付データから「月」だけを取り出す関数です。

今月のカレンダーの中に、紛れ込んでしまった「先月の日付」や「来月の日付」を特定するために使います。


実践:5分で作る自動カレンダーの全手順

それでは、実際に手を動かしていきましょう。

ステップ1:設定用の入力欄を作る

まず、シートの左上に以下の入力をしてください。

  • B1セル:年(例:2026)
  • D1セル:月(例:1) これで、B1とD1を書き換えるだけでカレンダーが連動する準備が整いました。
設定用の入力欄の作成

ステップ2:曜日ラベルの作成

3行目(A3からG3)に、左から「日・月・火・水・木・金・土」と入力します。

ステップ3:数式を入力する

カレンダーの左上、A4セルに以下の数式を1つだけ入力してください。

=SEQUENCE(6, 7, DATE(B1, D1, 1) – WEEKDAY(DATE(B1, D1, 1)) + 1)

この数式を入力してエンターキーを押すと、A4からG9までの範囲に一瞬で日付(あるいは5桁の数字)が表示されます。

入力結果
でんちゃん
でんちゃん

上記のようにシリアル値が出た場合は「ホーム」タブ→「数値」→ユーザー設定で設定を好きなものに変えてください。


なぜこの数式でカレンダーができるのか?(深掘り解説)

なぜ「- WEEKDAY + 1」をするのか?

カレンダーは必ずしも「1日が日曜日」から始まるとは限りません。

例えば、1月1日が「木曜日」だった場合、カレンダーの1行目の日曜日には「12月28日」を表示させる必要があります。

  1. DATE(B1, D1, 1) で、まず「1月1日」を特定します。
  2. WEEKDAY関数で、1月1日が「木曜日(数値は5)」であることを突き止めます。
  3. 1月1日から5を引くと、前週の土曜日になります。そこに1を足すことで、正確に「その週の日曜日」へと着地できるのです。

このロジックを理解すると、月曜始まりのカレンダーへのカスタマイズも容易になります。


デザインを極める「条件付き書式」の魔術

今のままでは、日付が「2026/1/1」と表示されていたり、前後の月が混ざって見づらかったりします。

表示形式を「日」だけにする

  1. 日付範囲(A4:G9)を選択。
  2. 右クリックで「セルの書式設定」を開く。
  3. 「ユーザー定義」を選択し、種類に d とだけ入力します。 これで、「1月1日」が「1」というシンプルな表示に変わります。

今月以外をグレーアウトする

「1月のカレンダーなのに、12月や2月の日付が見えているのは紛らわしい」という問題を解決します。

  1. 日付範囲を選択した状態で「条件付き書式」をクリック。
  2. 「新しいルール」から「数式を使用して、書式設定するセルを決定」を選択。
  3. 次の数式を入力: =MONTH(A4)<>D1
  4. 書式で文字色を「薄いグレー」に設定。
でんちゃん
でんちゃん

この「<>」という記号は、エクセルで「〜ではない(等しくない)」を意味します。「そのセルの月が、D1セルに入力した月と一致しない場合、色を薄くせよ」という命令を出しているわけです。


応用編:祝日リストとの連携(COUNTIF関数の活用)

さらに実用性を高めるために、祝日を自動で赤くする方法も解説します。

  1. 新しいシート「祝日設定」を作成。
  2. A列に祝日の日付、B列に祝日名をリスト化します。
  3. カレンダーシートに戻り、条件付き書式を追加します。
  4. 数式: =COUNTIF(祝日設定!$A:$A, A4)>0
  5. 書式で背景を「薄いピンク」に、文字を「赤」にします。
でんちゃん
でんちゃん

これにより、エクセルが「カレンダーの日付が祝日リストの中に1つでも存在するか?」を毎瞬チェックしてくれるようになります。


まとめと設定一覧

設定対象使うべき数式・設定値期待される効果
日付の自動生成SEQUENCE関数数式1つで42日分を自動入力
開始日の特定DATE関数とWEEKDAY関数どんな月でも日曜から正しく開始
今月以外の非表示MONTH(A4)<>D1余計な日付をグレーアウト
祝日の自動判定COUNTIF(祝日リスト, A4)>0休日設定を自動化

おわりに

いかがでしたでしょうか?「関数だけで作る自動カレンダー」は、一度作ってしまえばずっと使える便利なツールになります。

手入力という「時間泥棒」から卒業し、エクセル本来のパワーを引き出すことで、よりクリエイティブな仕事に時間を割けるようになります。ぜひ試してみてください。

この記事を書いた人
でんちゃん

一児の父。人事として6年、採用・教育・労務・人事制度などを経験してきました。これまで200名ほどの方と面接を実施してきたので就職・転職に関するノウハウがあります。またExcelを用いたデータ分析が得意です。
娘が生まれ日々のすさまじい成長を目の当たりにしています。
人事やExcel、子育てに関してのお役立ち情報を伝えるブログを作っていきます!

でんちゃんをフォローする
office365
シェアする
でんちゃんをフォローする

コメント

タイトルとURLをコピーしました