スプレッドシートDATE関数の使い方|月末日・Nヶ月後も自動計算

スポンサーリンク

「2026年」「3月」「15日」のように年・月・日がバラバラのセルに入っていて、ひとつの日付にまとめたいと思ったことはありませんか?

Googleスプレッドシートに手入力で「2026/3/15」と打ち込む方法もありますが、データが増えるたびに手作業では追いつきません。ミスも起きやすいですよね。

そんなときに活躍するのがDATE関数です。年・月・日の3つの数値を渡すだけで、正しい日付データを作ってくれます。

この記事では基本の書き方から、月末日の自動計算やNヶ月後の日付を求めるテクニックまで紹介します。

スプレッドシートのDATE関数とは?年月日から日付を作る関数

DATE関数(読み方: デイト関数)は、年・月・日の3つの数値から日付データを作成する関数です。

名前は英語の「date(日付)」がそのまま関数名になっています。

スプレッドシートの日付は内部的に「シリアル値」という数値で管理されています。たとえば「2026/1/1」はシリアル値で「46023」です。

DATE関数を使えば、このシリアル値を意識せずに正しい日付を作成できます。手入力した「2026/3/15」は文字列として認識されるリスクがありますが、DATE関数なら確実に日付型のデータになりますよ。

DATE関数でできることをまとめると、次のとおりです。

  • 年・月・日のセルを組み合わせて1つの日付を作る
  • 月や日に計算式を入れてNヶ月後の日付を求める
  • 日に「0」を指定して前月の末日を取得する
  • TODAY関数と組み合わせて「今月1日」などの基準日を作る

NOTE

DATE関数はGoogleスプレッドシートの全バージョンで使えます。Excelでも同じ構文で動作するので、ファイル共有時も安心です。

DATE関数の基本の書き方

構文と引数

=DATE(年, 月, 日)

カッコの中に「年」「月」「日」を順番に入れるだけです。引数は3つとも必須です。

引数の詳細

引数必須/任意説明
必須西暦の年(例: 2026)
必須月を表す数値(1〜12)
必須日を表す数値(1〜31)

月や日に範囲外の値を指定すると、自動で繰り上げ・繰り下げされます。たとえば月に「13」を指定すると翌年の1月として計算されます。この仕組みを「ロールオーバー」と呼びます。

NOTE

年に0〜1899の値を指定すると、1900が加算されます。=DATE(119,2,1) は「2019/2/1」になります。西暦4桁で指定するのが安全です。

DATE関数の基本的な使い方

もっともシンプルな使い方です。年・月・日を直接指定してみましょう。

=DATE(2026, 3, 15)

結果は「2026/3/15」です。確実に日付型のデータが作成されます。

セル参照と組み合わせるケースも見てみましょう。A1に「2026」、B1に「3」、C1に「15」が入っているとします。

=DATE(A1, B1, C1)

結果は同じく「2026/3/15」です。セルの値を変更すれば日付も自動で更新されます。

TODAY関数と組み合わせれば「今月1日」も作れます。

=DATE(YEAR(TODAY()), MONTH(TODAY()), 1)

YEAR関数で今年の年、MONTH関数で今月の月を取り出しています。日を「1」に固定すれば、常に今月1日の日付が返りますよ。

表示形式を変えたいときは、スプレッドシートのTEXT関数を使うと「2026年3月」のような文字列に変換できます。

実務で使えるDATE関数の応用テクニック

月の最終日を自動計算する

DATE関数の「日」に0を指定すると、前月の末日が返ります。これがDATE関数の隠れた便利ワザです。

=DATE(2026, 4, 0)

結果は「2026/3/31」です。4月の「0日目」は3月の最終日として解釈されます。

つまり「翌月の0日目=当月の末日」です。当月の末日を求めるには、月に1を足して日を0にします。

=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0)

この数式で常に「今月の末日」が返ります。2月の末日も28日と29日を自動で判定してくれますよ。

Nヶ月後・Nヶ月前の日付を求める

DATE関数の「月」に加算・減算をするだけです。A1に基準日が入っているとします。

=DATE(YEAR(A1), MONTH(A1)+3, DAY(A1))

基準日が「2026/1/15」なら、結果は「2026/4/15」です。3ヶ月後の同じ日が返ります。

3ヶ月前を求めるなら、+3を-3に変えるだけです。

=DATE(YEAR(A1), MONTH(A1)-3, DAY(A1))

基準日が「2026/4/15」なら、結果は「2026/1/15」です。

月末日の基準日には注意が必要です。「2026/1/31」の1ヶ月後は「2026/3/3」になります。2月は28日までしかないため、3日分が3月にロールオーバーするためです。月末日を維持したい場合はEOMONTH関数を使いましょう。

年度の開始日・終了日を自動計算する

日本の多くの企業は4月始まりの年度を使っています。年度の開始日と終了日を自動で求めてみましょう。

A1に対象の日付が入っているとします。まず年度の開始日です。

=IF(MONTH(A1)>=4, DATE(YEAR(A1),4,1), DATE(YEAR(A1)-1,4,1))

4月以降なら今年の4月1日、1〜3月なら前年の4月1日が返ります。

次に年度の終了日です。

=IF(MONTH(A1)>=4, DATE(YEAR(A1)+1,3,31), DATE(YEAR(A1),3,31))

4月以降なら翌年の3月31日、1〜3月なら今年の3月31日が返ります。

A1が「2026/7/10」なら、年度開始日は「2026/4/1」、年度終了日は「2027/3/31」です。期末レポートの自動化に使ってみてください。

EDATE・EOMONTH関数との使い分け

Nヶ月後の日付や月末日の計算は、専用関数でも実現できます。DATE関数との違いを整理しましょう。

用途DATE関数専用関数
Nヶ月後の日付=DATE(YEAR(A1),MONTH(A1)+N,DAY(A1))=EDATE(A1,N)
Nヶ月後の月末日=DATE(YEAR(A1),MONTH(A1)+N+1,0)=EOMONTH(A1,N)
月末日の処理ロールオーバーで翌月にずれる月末日を維持する
年度開始日の計算DATE関数で自由に組める対応不可

EDATE関数は「Nヶ月後の同日」を返す専用関数です。数式がシンプルになるのがメリットです。

EOMONTH関数は「Nヶ月後の月末日」を返します。月末日の計算はDATE関数より安全です。

ただしEDATE・EOMONTH関数では「年度の開始日」のような柔軟な日付計算はできません。年・月・日を個別にコントロールしたい場面ではDATE関数が必要です。

使い分けの目安はこうです。

  • 「Nヶ月後の同日」→ EDATE関数がシンプル
  • 「Nヶ月後の月末日」→ EOMONTH関数が安全
  • 「特定の年月日を自由に組み立てたい」→ DATE関数

DATE関数のよくあるエラーと対処法

エラー原因対処法
#VALUE!引数に文字列が入っているセル参照先が数値かどうか確認する
#NUM!日付の範囲外(負の日付等)年月日の値が妥当か確認する
#ERROR!構文ミス(カッコ忘れ等)数式の入力内容を見直す
日付でなく数字が表示される表示形式が「数値」になっている表示形式を「日付」に変更する

文字列が混在しているとき

年・月・日のセルに文字列が混ざると#VALUE!エラーになります。

=DATE("2026年", 3, 15)

「2026年」は文字列なので数値として認識できません。数値の「2026」を渡す必要があります。

スプレッドシートのVALUE関数で文字列を数値に変換する方法もあります。ただし「2026年」のような日本語混じりの文字列はVALUE関数でも変換できないので注意してください。

日付でなく数字が表示されるとき

DATE関数の結果が「46097」のような数字で表示される場合があります。これはセルの表示形式が「数値」になっているためです。

セルを選択して「表示形式」メニューから「日付」を選べば正しく表示されます。DATE関数自体は正常に動作しているので安心してください。

まとめ

DATE関数は、年・月・日の3つの数値から日付データを作成する関数です。

ポイントを整理します。

  • 構文は =DATE(年, 月, 日) の3引数。確実に日付型データが作れる
  • 日に「0」を指定すれば前月の末日を自動取得できる
  • 月に加算・減算すればNヶ月後・Nヶ月前の日付が求まる
  • 年度の開始日・終了日の計算にも活用できる
  • Nヶ月後はEDATE関数、月末日はEOMONTH関数も検討する
  • TEXT関数で表示形式を自由にカスタマイズできる

まずは =DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0) で今月の末日を求めるところから試してみてください。

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