「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) で今月の末日を求めるところから試してみてください。
