Excelで予定表や勤務表を作るとき、月を変更するだけで日付と曜日が切り替わるカレンダーがあると便利です。
手入力のカレンダーでは月末の日数や曜日のずれを修正する手間がかかりますが、関数を使えば翌月以降も再利用できます。
この記事では、指定した年と月から日付を表示し、曜日を自動表示する月間カレンダーの作り方を解説します。
年と月の入力セルを用意し、DATE関数で月初を作ることが基本です。
日付は開始セルから1日ずつ増やし、TEXT関数または表示形式で曜日を整えます。
月外の日付を空欄にすれば、見やすい実用的なカレンダーになります。
サンプルデータでは、1行目を見出し行として扱います。
エクセル関数による月間カレンダーの作成手順
| 年 | 月 | カレンダー開始日 |
|---|---|---|
| 2026 | 9 | 2026/9/1 |
それではまず、年と月の入力値から自動更新できるカレンダーの土台について解説していきます。
年と月の入力セル
最初に、カレンダーの表示対象となる年と月を入力するセルを決めます。
たとえばB1セルに年、C1セルに月を入力し、B1には2026、C1には9を入力します。
このように条件を上部へ集めると、利用者が変更する場所が明確になります。
年と月を日付セルへ直接書き込まず、専用の入力セルに分けることが再利用しやすい表作りのポイントです。
月の入力には1から12までの整数を使います。
入力規則を設定してリストから選べるようにしておくと、13月のような入力ミスも防ぎやすくなります。
B1セルは西暦、C1セルは月を入力する前提です。
例としてB1が2026、C1が9なら、表示する対象は2026年9月です。
月初日の数式
カレンダー作成では、対象月の1日を正しい日付シリアル値として求めます。
たとえばE2セルに月初日を置く場合、次の数式を入力します。
=DATE($B$1,$C$1,1)
DATE関数は年、月、日を順に指定して日付を作る関数です。
この式ではB1の年、C1の月、そして固定した1日を組み合わせています。
ドル記号を付けた絶対参照にすると、後から数式をコピーしても参照先がずれません。
表示が45200のような数字になった場合は、セルの表示形式を日付へ変更しましょう。
これは計算が失敗したのではなく、Excelが日付を内部では連続した数値として扱うためです。

曜日見出しと開始位置
月間カレンダーは通常、日曜日から土曜日までの7列で構成します。
たとえばB4からH4に日、月、火、水、木、金、土と入力します。
その下のB5からH10を日付表示エリアにすると、最大6週分を確保できます。
月によっては6行目まで日付が必要になるため、5週分だけで設計しないことが大切です。
日曜日を先頭にするか、月曜日を先頭にするかは業務の慣習に合わせて選びます。
日本の一般的な壁掛けカレンダーに近づけるなら、日曜日開始がわかりやすい構成です。
【操作のポイント】年と月のセルはカレンダー本体の外側に配置し、数式では絶対参照にします。
DATE関数とWEEKDAY関数による日付配置
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 |
続いては、月初日が何曜日かを判定し、正しい列から日付を並べる方法を確認していきます。
WEEKDAY関数による曜日番号
WEEKDAY関数は、指定した日付が週の何日目かを数値で返します。
月初日がE2セルにある場合、日曜始まりの番号を調べる数式は次のとおりです。
=WEEKDAY($E$2,1)
第2引数を1にすると、日曜日が1、月曜日が2、土曜日が7となります。
2026年9月1日は火曜日なので、この式の結果は3です。
つまり、日曜日開始のカレンダーでは、1日を火曜日列に置く必要があります。
WEEKDAY関数の第2引数によって曜日番号の並び方が変わるため、日曜始まりと月曜始まりを混同しないよう注意しましょう。
月曜始まりの表なら、第2引数には2を指定します。
開始セルに入力する数式
B5セルを日曜日列の先頭として、月初日前の日付も含めた連続した日付を配置する方法があります。
B5セルには次の数式を入力します。
=$E$2-WEEKDAY($E$2,1)+1
月初日から曜日番号を引き、さらに1を足すことで、その週の日曜日を求めています。
2026年9月では、B5セルには2026年8月30日が表示されます。
月初日が火曜日なら、その週の日曜日は2日前になるためです。
この時点では前月の日付も表示されますが、後の手順で対象月以外を空欄にできます。

横方向と縦方向への連続コピー
C5セルには、B5の翌日を表示する数式を入力します。
=B5+1
この式をH5セルまで右へコピーすると、1週間分の日付が連続して並びます。
次にB6セルには、前週の日曜日から7日後を表示する式を設定します。
=B5+7
B6からH6へ横コピーし、その行全体を下方向へコピーすれば6週分のカレンダーが完成します。
日付の連続性は1日ずつ増える数式で作り、見た目の制御は表示形式と条件付き書式に任せると管理しやすくなります。
計算用の日付を正しく保つことで、予定表や祝日判定にもそのまま利用できます。
【操作のポイント】日曜始まりならWEEKDAY関数の第2引数を1にし、開始セルは月初日より前の日曜日にします。
IF関数による対象月以外の日付非表示
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 |
続いては、前月分と翌月分を隠し、対象月だけを見せる数式を確認していきます。
MONTH関数による月の比較
日付を並べたカレンダーでは、最初の週に前月、最後の週に翌月の日付が含まれます。
対象月だけを表示したいときは、MONTH関数で日付の月と入力月を比較します。
たとえばB5に実際の日付を置き、別の表示用セルで判定する場合は次の式を使えます。
=IF(MONTH(B5)=$C$1,B5,””)
B5の日付の月がC1の月と一致すればB5を表示し、一致しなければ空欄を返す数式です。
年をまたぐ12月と1月を扱う場合も、元の日付がDATE関数で正しく作られていれば問題ありません。
空欄に見えても日付を内部に残したい場合と、実際に空文字を返したい場合は用途で分けるとよいでしょう。
日付セルへ直接入れる数式
補助セルを使わず、表示用のカレンダーへ直接数式を入れる方法もあります。
前節の開始日計算をB5セルに組み込み、対象月外を空欄にする式は次のようになります。
=IF(MONTH(DATE($B$1,$C$1,1)-WEEKDAY(DATE($B$1,$C$1,1),1)+1)=$C$1,DATE($B$1,$C$1,1)-WEEKDAY(DATE($B$1,$C$1,1)+1,1)+1,””)
ただし、数式が長くなると修正や確認が難しくなります。
実務では、非表示にする前の連続日付を別の範囲で作り、表示専用の表でIF関数を使う設計も有効です。
関数の意味を追いやすい構成は、翌年に自分で修正するときにも役立ちます。

ユーザー定義表示形式の活用
日付そのものは残し、表示だけを日付の数字にしたい場合はセルの表示形式を設定します。
セルの書式設定でユーザー定義を開き、表示形式にdを入力すると1から31の日だけを表示できます。
ddと入力すると01のように2桁表示になります。
数式でTEXT関数を使って文字列に変換するより、日付計算を続ける表では表示形式で整える方法が扱いやすい場面があります。
日付として残しておけば、日数計算、予定の検索、条件付き書式にも利用可能です。
【操作のポイント】月外の日付を消すときはMONTH関数で判定し、日付の計算値と見た目を分けて管理します。
TEXT関数と表示形式による曜日自動表示
| 日付 | 曜日表示 | 表示例 |
|---|---|---|
| 2026/9/1 | =TEXT(A2,”aaa”) | 火 |
続いては、日付に連動して曜日を自動表示する方法を確認していきます。
TEXT関数による曜日表示
日付がA2セルに入っている場合、曜日を短い日本語で表示する数式は次のとおりです。
=TEXT(A2,”aaa”)
この式は火曜日なら火、日曜日なら日を返します。
曜日まで含めて火曜日のように表示したい場合は、書式文字列をaaaaに変更します。
日付と曜日をひとつのセルにまとめたい場合は、次の式も利用できます。
=TEXT(A2,”m/d(aaa)”)
この数式なら9/1(火)のような表示になります。
TEXT関数の結果は文字列になるため、その後に日付計算へ使うセルには元の日付を残すことが重要です。
セルの表示形式による曜日表示
曜日専用の計算を増やしたくない場合は、セルの表示形式を変更する方法が便利です。
日付のセルを選択し、Ctrlキーと1キーを押してセルの書式設定を開きます。
表示形式のユーザー定義でm/d(aaa)と入力すると、数式を変えずに9/1(火)と表示できます。
曜日だけを表示する場合はaaa、曜日まで表示する場合はaaaaを指定します。
この方法ならセルの中身は日付のままです。
並べ替えや日数の差の計算を行う可能性がある表では、表示形式の設定が特に向いています。
画面のように、数式バーにはTEXT関数、セルには曜日の結果が表示されます。
曜日別の色分け
日曜日を赤、土曜日を青にすると、予定を確認するときの視認性が上がります。
条件付き書式で数式を使用し、日曜日列には=WEEKDAY(B5,1)=1、土曜日列には=WEEKDAY(B5,1)=7を設定できます。
対象範囲はカレンダーの日付領域全体を選びます。
数式内のB5は選択範囲の左上セルに合わせて変更してください。
条件付き書式は値を変えず、見た目だけを自動で変えられる機能です。
祝日リストを別シートに用意すれば、COUNTIF関数と組み合わせて祝日も色分けできます。
【操作のポイント】曜日を計算に使うなら元の日付を保持し、表示だけならTEXT関数またはユーザー定義表示形式を使い分けます。
予定表と祝日表示のカレンダー応用
| 日付 | 予定 | 祝日 |
|---|---|---|
| 2026/9/1 | 月初会議 |
続いては、完成したカレンダーを予定管理や祝日表示へ広げる方法を確認していきます。
予定一覧との連動
別シートに予定一覧を作っておくと、カレンダーの日付に対応する予定を表示できます。
予定表シートのA列に日付、B列に予定内容を入力する場合、カレンダーの日付セルを参照してXLOOKUP関数を使えます。
=XLOOKUP(B5,予定表!$A$2:$A$100,予定表!$B$2:$B$100,””)
この数式では、B5の日付と一致する予定を予定表シートから検索します。
予定表は1行目に日付と予定の見出しを置き、データは2行目から入力する構成です。
同じ日に複数の予定がある場合は、FILTER関数やTEXTJOIN関数を使う方法も検討できます。
カレンダー側の日付が文字列ではなく本当の日付であることが、予定検索を成功させる条件です。
祝日リストとの照合
祝日を表示するには、別シートに祝日の日付を一覧で登録します。
たとえば祝日シートのA2からA50に祝日の日付を入力し、カレンダーの日付を照合します。
=COUNTIF(祝日!$A$2:$A$50,B5)>0
この条件が真なら、その日付は祝日リストに存在します。
条件付き書式の数式として設定すれば、祝日セルを赤い背景や文字色で自動表示できます。
祝日名も表示したい場合は、XLOOKUP関数で祝日名の列を検索します。
毎年変わる祝日情報は、使用前に祝日リストを更新しましょう。
印刷レイアウトの調整
カレンダーを紙で使う場合は、印刷範囲とページ設定を整えます。
ページレイアウトタブで横方向、余白を狭い設定にすると、7列の表を1枚に収めやすくなります。
各日付セルには予定を書き込める余白が必要なので、行の高さを少し広げるのがおすすめです。
印刷プレビューで文字が小さくなりすぎていないかを確認してから印刷すると、実用性を保てます。
タイトル部分には=TEXT(DATE($B$1,$C$1,1),”yyyy年m月”)のような式を使えば、対象月の表示も連動します。
【操作のポイント】予定と祝日は別シートで管理し、日付をキーにしてカレンダーへ連動させます。
まとめ エクセル関数でカレンダーを作る方法(日付・曜日の自動表示)
Excelのカレンダーは、年と月の入力セル、DATE関数、WEEKDAY関数を組み合わせることで自動作成できます。
最初にDATE関数で対象月の1日を求め、WEEKDAY関数でカレンダーの開始位置を決めます。
開始セルから日付を連続させれば、月の日数やうるう年を意識せずに日付を更新できます。
対象月以外を表示しない場合はIF関数とMONTH関数で判定する方法が便利です。
曜日はTEXT関数で別セルに表示でき、日付としての計算を残したい場合はユーザー定義表示形式が向いています。
さらに予定表や祝日一覧を別シートに作れば、検索関数や条件付き書式で実務用の月間予定表へ発展させられます。
まずは年と月を変えるだけで日付が切り替わる基本形を作り、必要に応じて曜日の色分けや予定表示を追加していきましょう。