LINE予約「LUCA」の機能と料金はこちら

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

スプレッドシート・Airtable 公開 更新

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 で作れます。

参考にした公式ドキュメント