Excelで予定表や当番表を作るとき、毎月の日付と曜日を手入力していると、作業時間がかかるうえに月末やうるう年で間違いやすくなります。
そこで便利なのが、基準となる年月を一つ指定するだけで、日付、曜日、翌月の表示まで連動して切り替わる自動カレンダーです。
自動カレンダーは、日付を連続入力するのではなく、基準日から日付を計算する仕組みにすると、翌月更新が簡単になります。
基本となる要素は、年月の入力セル、DATE関数、WEEKDAY関数、月末日の判定です。
この記事では、Excelの関数を使って月間カレンダーを自動作成する方法を、サンプル表と数式の意味を交えながら解説します。
1行目にはヘッダーがあるサンプルデータとして、見やすく更新しやすい構成を確認していきましょう。
エクセルで自動カレンダーを作成する方法
| A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
それではまず、年月を変更するだけで日付が切り替わるカレンダーの作り方について解説していきます。
最初に、B2セルへ対象月の最初の日を入力します。たとえば2026年9月のカレンダーなら、B2セルに2026/9/1と入力してください。
基準日には、年月だけではなく必ずその月の1日を入力するのがポイントです。
セルの表示形式をyyyy年m月にすれば、入力値を日付のまま保持しながらタイトルとして見せられます。
年月を指定する基準セル
基準セルは、カレンダー全体を動かすための起点です。
たとえばB2セルに2026/9/1を入力し、B3セルに=EDATE(B2,1)を入力すると、B3セルには翌月の2026/10/1が表示されます。
EDATE関数は、基準日から指定した月数だけ前後へ移動した日付を返す関数です。
翌月更新用のセルを用意しておけば、毎月のファイル複製や日付の打ち直しを減らせます。
翌月の日付を求める数式
=EDATE(B2,1)
数式内のB2は基準日、1は翌月へ進める月数を意味します。
前月を表示したい場合は、1を-1に変更して=EDATE(B2,-1)と入力しましょう。
曜日見出しを配置する手順
カレンダーの見出し行には、日、月、火、水、木、金、土を左から順に配置します。
日曜日は赤、土曜日は青で表示すると、予定の確認がしやすくなります。
文字色を変えるだけでも、平日と休日の区別が視覚的に明確になります。
曜日の見出しは、後から曜日を計算するための基準ではなく、読者が日付を読むための案内です。
そのため、日付セル側の数式と混ぜずに、見出し行を固定しておくと管理しやすいでしょう。
日付を連続表示する数式
日付欄の左上にあたるA6セルには、次の数式を入力します。
=B2-WEEKDAY(B2,1)+1
この数式は、基準月の1日が含まれる週の日曜日を求める式です。
WEEKDAY(B2,1)は、B2の日付が何曜日かを日曜日から土曜日までの数値で返します。
日曜日は1、月曜日は2、土曜日は7として扱われるため、基準日から曜日番号を引いて1を足すと、その週の日曜日になります。

A6セルの右隣であるB6セルには=A6+1を入力し、右方向へコピーしてください。
さらに次の行のA7セルには=A6+7を入力すれば、翌週の日曜日から始まる行を作れます。
日付を文字として入力せず、日付の連続値として計算することが自動更新の土台です。
【操作のポイント】日付セルの表示形式をdに設定すると、内部では完全な日付を保ったまま、セルには日だけを簡潔に表示できます。
日付と曜日を連動させる関数
| 基準日 | 曜日番号 | 表示曜日 |
|---|---|---|
| 2026/9/1 | 3 | 火 |
続いては、日付から曜日を求め、カレンダー表示に活かす関数を確認していきます。
Excelの日付は、見た目が同じでも内部では連続した数値として扱われています。
この仕組みがあるため、1日加算するだけで翌日へ進み、曜日も自動で変化します。
WEEKDAY関数の基本
WEEKDAY関数は、指定した日付が週の何日目かを数値で取得する関数です。
基本の書式は=WEEKDAY(シリアル値,種類)です。
カレンダーで日曜日を先頭にしたい場合は、種類に1を指定します。
=WEEKDAY(A6,1)
この数式では、A6の日付が日曜日なら1、月曜日なら2、土曜日なら7を返します。
曜日番号を使うと、土日だけに色を付ける条件付き書式も設定しやすくなります。
月曜日始まりのカレンダーにする場合は、種類を2にすると月曜日が1、日曜日が7になります。
TEXT関数による曜日表示
曜日を数値ではなく、月や火のような文字で表示したいときはTEXT関数を使います。
=TEXT(A6,”aaa”)
aaaを指定すると、日、月、火のような短い曜日名が表示されます。
aaaaを指定した場合は、日曜日、月曜日のように長い表記になります。
日付セルに直接TEXT関数を入れると計算用の日付ではなく文字列になるため、通常は日付欄とは別の補助セルで使うと安全です。
カレンダーの日付欄は日付のまま保持し、曜日だけをTEXT関数で見せる構成が実務向きです。
土日を色分けする条件付き書式
休日を見やすくするには、日付の範囲に条件付き書式を設定します。
日付欄がA6からG11までの場合、まずその範囲を選択します。
次にホームタブから条件付き書式、新しいルール、数式を使用して書式設定するセルを決定を選びます。
日曜日用の数式には=WEEKDAY(A6,1)=1を入力します。
土曜日用には=WEEKDAY(A6,1)=7を入力し、それぞれ文字色や塗りつぶし色を設定しましょう。

数式内のA6は、選択範囲の左上セルを基準にすることが重要です。
列記号や行番号にドル記号を付けない相対参照にすると、各セルの日付に合わせて判定されます。
【操作のポイント】条件付き書式を設定する前に、日付セルが文字列ではなく日付として認識されていることを確認します。
月末日と翌月の日付を非表示にする設定
| 9月 | 10月 |
|---|---|
| 9/30 | 10/1 |
| 当月末日 | 翌月日付 |
続いては、当月以外の日付を隠して、月間カレンダーとして整える方法を確認していきます。
月初が週の途中にある場合や、月末が土曜日以外で終わる場合、カレンダーには前月や翌月の日付が含まれます。
これらを薄い色にするか、空白にするかで見た目が大きく変わります。
EOMONTH関数による月末日
月末日を取得するにはEOMONTH関数が便利です。
=EOMONTH($B$2,0)
この式は、B2セルの属する月の最終日を返します。
2番目の引数が0なら当月末、1なら翌月末、-1なら前月末です。
2026年2月のように日数が少ない月でも、EOMONTH関数なら28日または29日を自動判定できます。
月末を固定の日数で考えず、関数で求めることで、2月や30日までの月にも対応できます。
当月以外を空白にするIF関数
日付欄に当月の日だけを表示したい場合は、IF関数とMONTH関数を組み合わせます。
たとえばA6セルにすでに日付が入っているとして、別の表示用セルで次の数式を使えます。
=IF(MONTH(A6)=MONTH($B$2),DAY(A6),””)
MONTH(A6)が基準月であるB2の月と同じなら、DAY(A6)で日だけを表示します。
月が異なる場合は、空文字列を返すためセルは空白に見えます。
年もまたぐカレンダーを正確に扱うには、月だけでなく年も比較する必要があります。
=IF(AND(YEAR(A6)=YEAR($B$2),MONTH(A6)=MONTH($B$2)),DAY(A6),””)
YEAR関数も加えると、前年や翌年の同じ月番号を誤って当月扱いすることを防げます。
前月と翌月を薄く見せる表示形式
空白にせず、前月と翌月の日付を薄いグレーで表示する方法もあります。
この場合は日付の値をそのまま残し、条件付き書式で当月以外を判定します。
適用範囲の左上をA6とした数式は、=MONTH(A6)<>MONTH($B$2)です。
年を含めるなら、=OR(YEAR(A6)<>YEAR($B$2),MONTH(A6)<>MONTH($B$2))とします。

書式には薄いグレーのフォント色を選ぶと、月をまたぐ日付だとわかりながら、当月の予定を邪魔しません。
日付を削除するより、補助的に見せるほうが週の流れを読みやすい場合もあります。
【操作のポイント】空白表示と薄色表示は用途で選びます。予定表なら空白、月またぎの勤務表なら薄色表示が使いやすい傾向です。
翌月更新を簡単にする入力とオートフィル
| 入力セル | 数式 | 結果 |
|---|---|---|
| B2 | 2026/9/1 | 9月 |
| B3 | =EDATE(B2,1) | 10月 |
続いては、翌月のカレンダーへ切り替える操作と、数式を効率よく広げる方法を確認していきます。
自動カレンダーでは、毎月変更するセルを一つに絞ることが大切です。
基準日を翌月へ切り替える方法
最も簡単な更新方法は、B2セルの日付を翌月の1日に変更する方法です。
2026/9/1を2026/10/1へ変更すれば、B2を参照している日付欄、タイトル、曜日判定、月末判定が連動します。
入力を楽にしたい場合は、B2セルに=EDATE(B2,1)を直接入れることはできないため、別セルに翌月用の数式を作ります。
たとえばB3に=EDATE(B2,1)を作成し、翌月へ更新するときはB3をコピーしてB2へ値貼り付けする運用です。
更新対象を基準日だけにすると、カレンダーの複数セルを修正する必要がありません。
横方向へ数式をコピーするオートフィル
A6セルに週の開始日を入力したら、右隣のB6セルへ=A6+1を入力します。
B6セルを選択し、セル右下に表示される小さな四角のフィルハンドルをG6までドラッグすると、式が横方向へコピーされます。
コピー後は、C6に=B6+1、D6に=C6+1のように相対参照が自動で変化します。
次週の開始セルであるA7には=A6+7を入力し、同様に下方向へコピーします。
行をまたぐ日付も連続して表示されるため、月末や翌月初日を手作業で調整する必要はありません。
月のタイトルを自動表示する設定
カレンダー上部のタイトルセルには、基準日を参照する式を入れます。
=TEXT($B$2,”yyyy年m月”)
この式なら、B2セルが2026/9/1のとき2026年9月と表示されます。
タイトルをセル結合して中央揃えにすると、月間カレンダーらしい見た目になります。
セル結合が不要な場合は、選択範囲内で中央を使う方法も便利です。
タイトルも基準日を参照させれば、翌月更新時に月名を書き換える作業は不要です。
【操作のポイント】タイトル用のセルには日付を直接書かず、TEXT関数で基準日を参照させると更新漏れを防げます。
予定表として使いやすくするレイアウト
| 日付欄 | 予定記入欄 | 確認欄 |
|---|---|---|
| 9月1日 火 | 会議 | 済 |
続いては、自動カレンダーを予定管理や共有用の表として使いやすく整える方法を確認していきます。
数式が正しくても、セルが狭すぎたり文字色が見づらかったりすると、日々の利用では不便になります。
行の高さと列幅の調整
月間カレンダーは、予定を書き込める高さを確保することが大切です。
日付だけを確認するカレンダーなら行の高さは25前後でも十分ですが、予定を複数行で記入するなら70以上にすると見やすくなります。
列幅は七つの曜日列でそろえると、全体のバランスが整います。
日付はセル左上、予定は中央付近に入力するなど、配置ルールを決めると閲覧時の迷いが減ります。
印刷範囲と改ページの確認
カレンダーを紙で配布する場合は、ページレイアウトタブから印刷範囲を設定します。
横向き印刷にして余白を狭くすると、7列のカレンダーを1ページへ収めやすくなります。
印刷プレビューで文字が小さすぎないか、タイトルや最終週が切れていないかを確認しましょう。
画面上で見やすい表と、紙に印刷して見やすい表は必ずしも同じではありません。
共有前に1回だけでもプレビューを確認する習慣が、レイアウト崩れの予防になります。
祝日や予定を追加する考え方
祝日を反映したい場合は、別シートに祝日一覧を作り、日付を1列に入力しておきます。
カレンダーの日付が祝日一覧に含まれるかどうかは、COUNTIF関数で判定できます。
=COUNTIF(祝日一覧!$A$2:$A$50,A6)>0
この数式を条件付き書式に使えば、祝日に色を付けられます。
祝日一覧の1行目をヘッダーとして、A1セルに日付、A2セル以降に祝日の日付を入力する構成がわかりやすいでしょう。
祝日データを別シートへ分けると、カレンダー本体の数式を複雑にせずに管理できます。
【操作のポイント】予定を入力するセルと日付を計算するセルは分け、数式が入ったセルを上書きしない構成にします。
まとめ エクセルのカレンダーを自動作成する方法(日付・曜日・翌月更新)
Excelで自動カレンダーを作成するには、まず対象月の1日を基準日として入力し、そのセルをすべての数式の起点にします。
日付欄は、基準日からWEEKDAY関数で週の開始日を求め、1日ずつ加算する形にすると、月が変わっても自然に並びます。
曜日の判定にはWEEKDAY関数、文字として曜日を表示する場合にはTEXT関数、月末日の確認にはEOMONTH関数が役立ちます。
翌月更新を簡単にする最大のコツは、基準日だけを変更すれば全体が更新される設計にすることです。
当月以外の日付を空白または薄色にし、土日や祝日へ条件付き書式を設定すれば、実用性の高い月間カレンダーになります。
毎月の日付入力を繰り返していた場合は、今回の数式を使って一度テンプレートを作成しておくと、予定表、当番表、勤務表などに幅広く活用できるでしょう。