Excelで日付を扱うとき、最も基本的な関数のひとつがDATE関数です。
「DATE関数って何に使うの?」「日付の書式設定との違いは?」という方のために、本記事ではDATE関数の使い方・書式設定・DATEDIF関数との関係・日付計算の応用まで丁寧に解説していきます。
DATE関数とは「年・月・日の数値から日付値を作成するExcel関数」である
それではまず、DATE関数の基本的な役割と構文を解説していきます。
DATE関数の構文:=DATE(年, 月, 日)
年・月・日それぞれに数値を指定すると、Excelの日付シリアル値(1900年1月1日を1とした整数)を返す。セルの書式設定で日付表示にすることで「2024/1/15」などの形式で表示される。
DATE関数が特に役立つのは、年・月・日が別々のセルや計算式から得られている場合に、それらを1つの日付値に組み合わせたいときです。
たとえば別のシートから取り込んだ年・月・日の数値を1つの日付として扱いたい場面で活躍します。
DATE関数の基本的な使い方
最もシンプルな例として、2024年3月15日の日付値を作成する場合は次のように書きます。
=DATE(2024, 3, 15) → 2024/3/15(書式設定が日付の場合)
=DATE(A1, B1, C1) → A1に年・B1に月・C1に日が入っている場合
=DATE(YEAR(TODAY()), 1, 1) → 今年の1月1日の日付値
第3引数(日)に月の最大日数を超えた値を入れると自動的に翌月に繰り上がるため、月末日の計算にも利用できます。
たとえば =DATE(2024, 3, 0) は2024年2月の末日(2月29日)を返します。
日付の書式設定との関係
DATE関数が返すのはExcel内部の数値(シリアル値)です。
見た目を「2024/03/15」「2024年3月15日」「Mar-24」などの形式にするには、セルの書式設定(Ctrl+1)で表示形式を変更します。
書式コードとして「yyyy/mm/dd」「yyyy年m月d日」「m/d(aaa)」(曜日付き)などが使えます。
TEXT関数と組み合わせれば、文字列として特定の書式の日付を得ることも可能です(例:=TEXT(DATE(2024,3,15),”yyyy年m月d日”))。
TODAY関数・NOW関数との組み合わせ
TODAY関数は今日の日付・NOW関数は現在の日時を返します。
DATE関数とTODAY・YEAR・MONTH・DAY関数を組み合わせることで、相対的な日付計算(今月の初日・翌月末日など)を動的に計算できます。
=DATE(YEAR(TODAY()), MONTH(TODAY()), 1) → 今月の1日
=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 0) → 今月の末日
=DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1) → 来月の1日
DATEDIF関数との組み合わせ
続いては、DATE関数と密接な関係があるDATEDIF関数を確認していきましょう。
DATEDIF関数の基本
DATEDIF関数は2つの日付の間の期間(年数・月数・日数)を計算する関数です。
=DATEDIF(開始日, 終了日, 単位)
単位:
“Y” → 満年数(年齢計算に便利)
“M” → 満月数
“D” → 総日数
“YM” → 1年未満の月数の余り
“MD” → 1ヶ月未満の日数の余り
DATEDIF関数はExcelの関数一覧に表示されない隠し関数ですが、互換性のために引き続き使えます。
「〇歳〇ヶ月〇日」という形式の年齢表示や勤続年数の計算でよく使われます。
年齢計算の具体例
生年月日から現在の年齢を計算する例を示します。
=DATEDIF(B2, TODAY(), “Y”) → B2に生年月日が入っている場合の満年齢
=DATEDIF(B2, TODAY(), “Y”)&”歳”&DATEDIF(B2, TODAY(), “YM”)&”ヶ月” → 〇歳〇ヶ月の形式
DATE関数で作成した基準日とDATEDIF関数を組み合わせることで、柔軟な期間計算が可能になります。
EDATE・EOMONTH関数との使い分け
特定の月数後の日付を求めるにはEDATE関数・特定の月末日を求めるにはEOMONTH関数が便利です。
=EDATE(A1, 3) → A1の3ヶ月後の同じ日
=EOMONTH(A1, 1) → A1の翌月の末日
これらとDATE関数を組み合わせることで、請求書の支払期限計算・プロジェクトのマイルストーン管理・契約満了日の算出など、ビジネスで頻出する日付計算が簡単に実現できます。
DATE関数を使った実践的な応用例
続いては、DATE関数の実践的な使い方を確認していきましょう。
| 用途 | 数式例 | 説明 |
|---|---|---|
| 今年の誕生日 | =DATE(YEAR(TODAY()),MONTH(B2),DAY(B2)) | B2に生年月日 |
| 翌月末日 | =EOMONTH(TODAY(),1) | 翌月の末日 |
| n営業日後 | =WORKDAY(TODAY(),n) | 土日祝を除いたn日後 |
| 年齢計算 | =DATEDIF(B2,TODAY(),”Y”) | B2の生年月日からの満年齢 |
| 文字列→日付変換 | =DATEVALUE(“2024/3/15”) | 文字列をシリアル値に変換 |
テキスト日付をDATE関数で変換する
システムから取り込んだデータが「20240315」という8桁の数値や「2024-03-15」という文字列になっている場合、DATE関数とLEFT・MID・RIGHT関数を組み合わせて日付値に変換できます。
“20240315”形式(A1に入力されている場合):
=DATE(LEFT(A1,4), MID(A1,5,2), RIGHT(A1,2))
→ 2024/3/15 の日付値を返す
これはデータ集計・レポート作成で非常に頻繁に使われるテクニックです。
まとめ
本記事では、ExcelのDATE関数の基本・書式設定との関係・DATEDIF関数との組み合わせ・実践的な応用例を解説してきました。
DATE関数は「年・月・日の数値から日付値を作成する」シンプルながら強力な関数であり、TODAY・YEAR・MONTH・DAY・DATEDIF・EDATE・EONOMTHなど関連関数と組み合わせることで、ビジネスで必要な日付計算のほぼすべてに対応できます。
まずは月末日の計算・年齢計算など身近な用途から試してみてください。