YEAR・MONTH・DAY関数の使い方|日付から年月日を抽出
YEAR関数・MONTH関数・DAY関数は、日付データから年・月・日の数値をそれぞれ取り出すExcelの基本関数です。年度の判定、月別の売上集計、日付の比較処理など、日付を分解して扱う場面で欠かせません。3つの関数はセットで覚えておくと実務で役立ちます。
各関数の基本構文
YEAR関数
=YEAR(シリアル値)
日付から「年」を4桁の数値で返します。
MONTH関数
=MONTH(シリアル値)
日付から「月」を1~12の数値で返します。
DAY関数
=DAY(シリアル値)
日付から「日」を1~31の数値で返します。
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| シリアル値 | 年・月・日を取り出す対象の日付 | 必須 |
3つの関数すべて、引数はシリアル値(日付データ)1つだけです。日付が入力されたセル参照や、DATE関数の戻り値などを指定します。
基本的な使い方
セルA2に「2026/04/15」が入力されている場合の動作を確認します。
| 数式 | 結果 | 説明 |
|---|---|---|
| =YEAR(A2) | 2026 | 年を返す |
| =MONTH(A2) | 4 | 月を返す |
| =DAY(A2) | 15 | 日を返す |
文字列の日付も処理できる
日付として認識できる文字列であれば、直接指定しても動作します。
=YEAR("2026/04/15") ' 結果:2026
=MONTH("2026-04-15") ' 結果:4
=DAY("2026年4月15日") ' 結果:15
TODAY関数との組み合わせ
現在の日付から年・月・日を取得する場合は、TODAY関数と組み合わせます。
=YEAR(TODAY()) ' 今年の年を返す
=MONTH(TODAY()) ' 今月の月を返す
=DAY(TODAY()) ' 今日の日を返す
実践例1:年度を計算する
日本の企業では4月始まりの年度を使うことが多く、1~3月は前年の年度に属します。YEAR関数とMONTH関数を組み合わせて年度を求めます。
=IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1)
A2に「2026/02/10」が入っている場合、2月は4月より前なので2025年度と判定されます。A2が「2026/05/01」なら2026年度です。
年度の表記を整える
「2025年度」のように文字列で表示するには、TEXT関数や文字列結合を使います。
=IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1) & "年度"
年度の開始月が異なる場合
決算期が4月以外の企業もあります。開始月をセルで指定できるようにする汎用的な数式は次のとおりです。
=YEAR(A2) - IF(MONTH(A2) < B1, 1, 0)
B1に年度開始月(例:4)を入力しておけば、開始月を変更するだけで対応できます。
実践例2:月別集計への活用
売上データから月別の集計を行う場合、MONTH関数でデータを月ごとに分類できます。
サンプルデータ
| A列(日付) | B列(売上) |
|---|---|
| 2026/04/05 | 150,000 |
| 2026/04/18 | 230,000 |
| 2026/05/02 | 180,000 |
| 2026/05/20 | 310,000 |
| 2026/06/10 | 200,000 |
SUMIFS関数との組み合わせ
特定の月の売上合計をSUMIFS関数で求めます。
=SUMPRODUCT((MONTH(A2:A6)=4)*B2:B6)
この数式はA2:A6の日付が4月のものだけをB2:B6から合計します。結果は380,000(150,000 + 230,000)です。
COUNTIFS関数での件数集計
月ごとの件数を数える場合もMONTH関数が使えます。
=SUMPRODUCT((MONTH(A2:A6)=4)*1)
4月のデータ件数(2件)が返されます。
実践例3:生年月日から年齢区分を判定
社員名簿や顧客リストで、生年月日から年齢層を判定する例です。
=YEAR(TODAY()) - YEAR(A2) - IF(DATE(YEAR(TODAY()), MONTH(A2), DAY(A2)) > TODAY(), 1, 0)
この数式で満年齢を計算できます。YEAR関数で年の差を出し、今年の誕生日がまだ来ていなければ1を引いています。
年代別に分類する
年齢を10歳刻みで分類する場合は、INT関数と組み合わせます。
=INT((YEAR(TODAY()) - YEAR(A2)) / 10) * 10 & "代"
結果は「20代」「30代」のように表示されます。
実践例4:日付の比較と条件分岐
月初・月末の判定
当日が月初(1日)かどうかを判定します。
=IF(DAY(A2)=1, "月初", "")
月末かどうかを判定するには、翌日の「日」が1かどうかを調べます。
=IF(DAY(A2+1)=1, "月末", "")
四半期の判定
MONTH関数を使って、日付がどの四半期に属するかを求めます。
=INT((MONTH(A2)-1)/3)+1
1~3月は1、4~6月は2、7~9月は3、10~12月は4が返ります。4月始まりの四半期(Q1が4~6月)にする場合は次のように調整します。
=INT((MONTH(A2)-4+12)/3)+1 - IF(INT((MONTH(A2)-4+12)/3)+1 > 4, 4, 0)
よりシンプルに書くと、MOD関数を使う方法もあります。
=INT(MOD(MONTH(A2)-4, 12)/3)+1
実践例5:勤怠管理での活用
出勤日が特定の日付範囲かを判定
社員の出勤日データが給与計算の締め日(例:毎月25日)をまたぐかどうかを判定します。
=IF(DAY(A2)<=25, MONTH(A2) & "月分", MONTH(A2)+1 & "月分")
25日以前なら当月分、26日以降なら翌月分として分類します。
月の経過日数を計算
当月の1日からの経過日数を求めます。
=DAY(A2) - 1
A2が「2026/04/15」なら14(4月1日から14日経過)が返ります。
よくあるエラーと対処法
#VALUE!エラー
日付として認識できない値を引数に指定した場合に発生します。
' エラーになる例
=YEAR("日付なし")
=MONTH(A2) ' A2が日付でない場合
対処法として、IFERROR関数でエラーを処理できます。
=IFERROR(YEAR(A2), "")
日付が5桁の数値で表示される
セルに日付を入力したつもりが、シリアル値(例:46113)で表示される場合があります。YEAR・MONTH・DAY関数はシリアル値に対しても正しく動作しますが、表示を日付形式にしたい場合はセルの書式設定を変更してください。
1900年より前の日付
Excelのシリアル値は1900年1月1日が起点です。1900年より前の日付は正しく処理できません。古い日付を扱う場合は文字列として管理し、LEFT関数やMID関数で年月日を取り出す方法を検討してください。
Google スプレッドシートでの互換性
YEAR関数・MONTH関数・DAY関数はGoogle スプレッドシートでも同じ構文・同じ動作で利用可能です。互換性の問題はありません。
まとめ
YEAR・MONTH・DAY関数は日付から年・月・日を個別に取り出す基本関数です。
- YEAR関数は年(4桁)、MONTH関数は月(1~12)、DAY関数は日(1~31)を返す
- 年度計算ではMONTH関数で月を判定して年度を振り分ける
- SUMPRODUCT関数やSUMIFS関数と組み合わせて月別集計ができる
- 四半期の判定や締め日の処理にも応用できる
- DATE関数やTODAY関数と組み合わせることで実用的な数式が作れる
日付を分解して扱う処理はExcelの実務で頻繁に登場します。3つの関数の使い方をしっかり覚えて、年度計算や月別集計に活かしましょう。