スプレッドシートで日付が自動更新されるカレンダーの作り方

Googleスプレッドシートで、月ごとのカレンダーを毎回手で作り直していませんか。この記事では、年と月を入れるだけで日付が並ぶカレンダーを、関数1つで作ります。開くたびに今月のカレンダーになる形と、日付を縦に並べる形も紹介します。
ここに載せた関数は、どれも2026年9月24日に実際のスプレッドシートに入れて、表示された結果を確かめたものです。Apps Script(スクリプト)は使いません。
この記事の結論
- カレンダーの日付は、
SEQUENCEとWEEKDAYを使った関数1つで、6週ぶん(6行×7列)をまとめて出せます。 - その月ではない日は、
IFとMONTHで空欄にします。 - 開始日を
TODAYから作ると、開くたびに今月のカレンダーになります。 - 月曜始まりにするときは、
WEEKDAYの2つ目の値に2を入れます。
完成形
年に2026、月に10を入れたときの表示です。実際のシートに出た結果をそのまま載せています。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
作り方
手順1:年と月を入れる欄を作る
A1に「年」、B1に年(例:2026)、C1に「月」、D1に月(例:10)を入れます。
A2に「開始日」と書き、B2に次の関数を入れます。その月の1日の日付になります。
=DATE(B1,D1,1)
手順2:曜日の見出しを入れる
3行目のA3からG3に、日・月・火・水・木・金・土の順に入れます。
手順3:A4に関数を1つ入れる
=ARRAYFORMULA(IF(MONTH(SEQUENCE(6,7,B2-WEEKDAY(B2)+1))=MONTH(B2),DAY(SEQUENCE(6,7,B2-WEEKDAY(B2)+1)),""))
A4からG9まで(6行×7列)に日にちが並びます。関数の結果がこの範囲に並ぶので、ほかの値は入れずに空けておきます。
関数の中身
WEEKDAY(B2)は、1日の曜日を数字で返します。日曜が1、土曜が7です。B2-WEEKDAY(B2)+1は、1日と同じ週の日曜日の日付です。カレンダーの左上はこの日から始まります。SEQUENCE(6,7,開始の日付)は、開始の日付から1日ずつ増える値を、6行×7列に並べます。IF(MONTH(…)=MONTH(B2),DAY(…),"")で、その月の日だけを日にちの数字にし、前後の月の日は空欄にします。
1か月は長くても6週にまたがるので、6行あれば足ります。たとえば2026年8月は1日が土曜日なので、日曜始まりでは30日と31日が6行目に入りました。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
開くたびに今月のカレンダーにする
B2を次の関数に変えます。この形では、年と月の欄は使いません。
=DATE(YEAR(TODAY()),MONTH(TODAY()),1)
2026年9月24日に開いたときは、2026年9月のカレンダーになりました。9月1日は火曜日です。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
TODAY は、日付が変わると値が変わる関数です。Googleのヘルプでも、TODAYの値は毎日変わると説明されています。再計算のタイミングは、[ファイル]→[設定]→[計算]の「再計算」で決められます。
月曜始まりにする
見出しを 月・火・水・木・金・土・日 の順にし、A4の関数の WEEKDAY(B2) を2か所とも WEEKDAY(B2,2) に変えます。2つ目の値を2にすると、月曜が1、日曜が7になります。
=ARRAYFORMULA(IF(MONTH(SEQUENCE(6,7,B2-WEEKDAY(B2,2)+1))=MONTH(B2),DAY(SEQUENCE(6,7,B2-WEEKDAY(B2,2)+1)),""))
2026年8月で確かめた結果です。
| 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
日付を縦に並べる(一覧の形)
予定表のように日付を縦に並べたいときは、別の列に次の2つの関数を入れます。1つ目が日付、2つ目が曜日です。1日から月末まで並びます。
=ARRAYFORMULA(TEXT(SEQUENCE(DAY(EOMONTH(B2,0)),1,B2),"m/d"))
=ARRAYFORMULA(TEXT(SEQUENCE(DAY(EOMONTH(B2,0)),1,B2),"ddd"))
EOMONTH(B2,0) はその月の末日、DAY はその日にち(10月なら31)です。その日数だけ行が並びます。2026年10月では、「10/1 木」から「10/31 土」まで31行が並びました。今回確かめたシートでは、曜日は「木」のように日本語で出ました。
まとめ
- 年と月の欄、開始日(
DATE)、曜日の見出し、A4の関数1つで、月のカレンダーができます。 - 開始日を
TODAYから作れば、開くたびに今月になります。 - 月曜始まりは
WEEKDAYの2つ目の値を2にします。 - 縦に並べる一覧は、
SEQUENCEとEOMONTHとTEXTで作れます。
参考にした公式ドキュメント






