YEAR・MONTH・DAY関数で日付から年月日を取り出す|月別集計・条件判定・シリアル値変換の実務パターンとMOS試験対策

「Excelで月別に集計したいのに、日付セルをそのまま条件に使えない」「年度判定をIF文で書こうとしたら複雑になりすぎた」——こうした悩みの多くは、日付から年・月・日を個別に取り出すYEAR・MONTH・DAY関数を活用することで解消されます。

Excelは内部で日付を「シリアル値」(1900年1月1日を1とした整数)として保存しています。セルの表示は「2026/06/27」でも、中身は数値です。YEAR・MONTH・DAY関数はこの数値から年・月・日成分だけを切り出す関数で、SUMIFSやIF・TEXT関数と組み合わせることで月別集計・年度判定・期限管理など幅広い業務に活用できます。

本記事では、YEAR・MONTH・DAY関数の基本構文・動作原理・実務シナリオ別の活用パターン・よくある間違い・DATE関数との連携・MOS Excel試験の出題ポイントを体系的に解説します。

目次

YEAR・MONTH・DAY関数の基本構文

3つの関数はそれぞれ引数が1つだけのシンプルな構文です。

=YEAR(シリアル値)
=MONTH(シリアル値)
=DAY(シリアル値)
関数戻り値範囲例(2026/06/27の場合)
YEAR年を整数で返す1900~9999=YEAR(2026/06/27) → 2026
MONTH月を整数で返す1~12=MONTH(2026/06/27) → 6
DAY日を整数で返す1~31=DAY(2026/06/27) → 27

引数の「シリアル値」には、日付型セルの参照・TODAY()・DATE()関数の結果・文字列形式の日付が使えます。セルA2に「2026/06/27」が入っているなら =YEAR(A2) と書くのが最も一般的な使い方です。

シリアル値と日付抽出の仕組み

Excelが日付をシリアル値として管理していることは、YEAR・MONTH・DAY関数を正しく使う上で重要な前提知識です。

日付表示内部シリアル値YEARMONTHDAY
1900/01/011190011
2000/01/0136526200011
2026/06/27462042026627

日付セルに =A2+1 のように加算すると翌日になるのも、内部が数値だからです。YEAR・MONTH・DAY関数はその数値から年・月・日成分を逆算して返します。セルが「数値」書式として表示されている場合でも、実体が日付シリアル値なら正しく動作します。

注意点:セルに「2026年6月」「Jun-2026」のような文字列として入力されていると、YEAR/MONTH/DAYは#VALUE!エラーになります。DATEVALUE関数でシリアル値に変換してから使う必要があります。

PR

今すぐ使えるかんたんbiz Excel関数+組み合わせ 効率UPスキル大全 Copilot対応(技術評論社)

関数単体だけでなく組み合わせ活用まで実務目線でまとめた1冊。業務でそのまま使えるパターン集として手元に置きやすい内容です。

実務シナリオ別の活用パターン

シナリオ1:MONTH+SUMIFSで月別売上集計

日付列から月を抽出した補助列を使うのが最もシンプルな月別集計パターンです。

B列に日付(B2:B100)、C列に売上金額が入っている場合、D列に月を抽出します。

=MONTH(B2)   ← D2に入力し、D100までオートフィル

D列(月数字)を条件にSUMIFSで集計します。

=SUMIFS(C:C00, D:D00, G2)

G2に「1」~「12」を入力すると各月の売上合計が返ります。補助列が不要な場合は、SUMPRODUCT関数と組み合わせる方法もあります。

=SUMPRODUCT((MONTH(B:B00)=G2)*(YEAR(B:B00)=H2)*C:C00)

H2に年を指定することで、複数年データが混在しても特定の年月だけを正確に集計できます。

シナリオ2:年度判定(4月始まり)

日本の会計年度は4月始まりが多く、2026年4月~2027年3月が「2026年度」になります。MONTH関数とIF関数を組み合わせて年度を返す数式です。

=IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1)

A2が2027年2月(月=2)の場合、2<4なので YEAR(A2)-1 = 2026 が返り、正しく「2026年度」と判定されます。A2が2026年4月(月=4)の場合は 4≥4 なので YEAR(A2) = 2026 となります。この数式をD列などの補助列に展開しておくと、PIVOTや集計での年度別分析が容易になります。

シナリオ3:誕生日の「月日」一致チェック

会員の誕生日(B列)と今日の月日が一致するかを判定し、バースデークーポン対象者を抽出します。

=AND(MONTH(B2)=MONTH(TODAY()), DAY(B2)=DAY(TODAY()))

月と日の両方が一致する場合にTRUEを返します。YEAR(誕生年)は比較から外すことで、何年生まれかに関わらず当日バースデーを判定できます。IFと組み合わせて「対象」「―」と表示すると一覧での視認性が高まります。

シナリオ4:DATE+YEAR+MONTHで月初日・翌月計算

YEAR・MONTH・DAYの戻り値を使ってDATE関数に渡すと、月初・月末・翌月などの日付を動的に生成できます。

' A2の日付と同じ月の1日(月初)
=DATE(YEAR(A2), MONTH(A2), 1)

' A2の日付の翌月1日
=DATE(YEAR(A2), MONTH(A2)+1, 1)

' A2の日付の月末(翌月1日の前日)
=DATE(YEAR(A2), MONTH(A2)+1, 1)-1

月初・月末の計算はEOMONTH関数でも実現できますが、DATE+YEAR+MONTHは引数を個別に操作できるため、「前月最終週の月曜日」「翌々月の特定日」など複雑な日付計算にも応用が利きます。

シナリオ5:勤続年数を年・月・日で表示する

入社日(A2)から本日までの勤続年数を「〇年〇ヶ月」形式で表示します。DAYはDATEDIF関数を使いますが、YEARとMONTHの計算にDATE関数+引き算を活用できます。

=DATEDIF(A2, TODAY(), Y) & 年 & DATEDIF(A2, TODAY(), YM) & ヶ月

DATEDIFは「Y」で満年数、「YM」で年を引いた後の満月数を返します。YEAR(TODAY())-YEAR(A2) だと誕生日(入社日の月日)を過ぎているかどうかを考慮せず単純差引きになるため、正確な勤続年数にはDATEDIFが適しています。

HOUR・MINUTE・SECOND関数(時刻の分解)

日付と同様に、Excelは時刻も小数部分のシリアル値(0.5=正午)として管理します。時刻から時・分・秒を取り出す関数もセットで覚えておきましょう。

=HOUR(シリアル値)    → 0~23の整数
=MINUTE(シリアル値)  → 0~59の整数
=SECOND(シリアル値)  → 0~59の整数
用途数式例説明
勤務時間の時刻成分抽出=HOUR(B2-A2)退勤-出勤の差を「時間」単位で取得
15分単位への丸め=MROUND(A2, 0:15)MROUND関数で15分単位に丸める(HOUR単独では対応困難)
時刻が業務時間内かチェック=AND(HOUR(A2)>=9, HOUR(A2)<18)9時以上18時未満かどうかをTRUE/FALSEで返す

日付時刻が同一セルに入っている場合(例:「2026/06/27 14:30:00」)は HOUR・MINUTE・SECOND でも正しく時刻部分が取り出せます。INT関数で小数部分を切り捨てると日付シリアル値だけが残るため、日付と時刻を分離する際に使います。

よくある間違いと対処法

間違い・エラー原因対処法
#VALUE!エラー引数が日付ではなく文字列(例:「2026年6月」「Jun」)DATEVALUE関数で日付シリアル値に変換してから渡す
戻り値が日付表示になる関数結果のセルが日付書式になっているセルの書式設定で「数値」または「標準」に変更する
年度判定がずれるYEAR(A2)の単純差引きで誕生月をまたぐ判定をしているIF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1)のパターンを使う
月の英語名が欲しいのにMONTHを使っているMONTH関数は数値(1~12)しか返さないTEXT(A2,mmmm)で英語月名、TEXT(A2,m月)で日本語月表記を得る
2桁ゼロ埋めが必要DAY(A2)が1桁の場合に01でなく1が返るTEXT(DAY(A2),00)で2桁ゼロ埋めにする

PR

関数は「使える順」に極めよう! Excel 最高の学び方(羽毛田睦土 著)

よく使う関数から段階的に学べる構成が特徴の解説書。似た関数を比較しながら理解を整理したいときに向いています。

TEXT関数との使い分けポイント

「月を取り出したい」という場面では、MONTH関数とTEXT関数の2択になることがあります。用途に応じて使い分けましょう。

取得したいもの使う関数数式例結果
月の数値(計算・比較に使う)MONTH=MONTH(A2)6
「6月」という表示文字列TEXT=TEXT(A2,m月)6月
「06」という2桁ゼロ埋め文字列TEXT=TEXT(A2,mm)06
「2026年6月」形式の文字列TEXT=TEXT(A2,yyyy年m月)2026年6月
年・月を別々に計算して別セルに格納YEAR + MONTH=YEAR(A2), =MONTH(A2)2026, 6

判断基準:SUMIFSやIF・AND条件など計算・比較に使う場合はMONTH/YEAR/DAY、表示や結合のみに使う場合はTEXTが適しています。TEXT関数の結果は文字列なので、数値比較では「6」≠「6月」となり意図しないエラーの原因になります。

MOS Excel試験でのYEAR・MONTH・DAY出題ポイント

MOS Excel 365&2019では、日付・時刻関数が「数式と関数の使用」のスキル項目に含まれます。YEAR・MONTH・DAY関数は以下の点で問われます。

  • 基本構文の理解:引数に日付セルを指定して年・月・日の数値を取り出す操作を正確に入力できる
  • TODAY()との組み合わせ=YEAR(TODAY())のように現在日付を引数に使う数式が出題される
  • DATE関数との連携:YEAR/MONTH/DAYで取り出した値をDATE関数に渡して新しい日付を生成する入れ子数式
  • IF条件への組み込み:月が特定の値かどうかをIF文で判定する数式(例:=IF(MONTH(A2)=3,Q4,―))
  • 書式設定との区別:MONTH関数は数値を返すことを理解し、表示形式の変更と混同しない

MOS試験 YEAR・MONTH・DAY関連チェックリスト

確認ポイント操作内容難易度
基本構文の入力=YEAR(A2)、=MONTH(A2)、=DAY(A2)を正確に入力できる★☆☆
TODAY()を引数に使う=MONTH(TODAY())で現在月を取得できる★☆☆
DATE関数との組み合わせ=DATE(YEAR(A2),MONTH(A2),1)で月初日を求められる★★☆
IF文との組み合わせMONTH/YEARの結果を条件式に使える★★☆
結果セルの書式修正関数結果が日付表示になった場合に数値書式へ変更できる★★☆
SUMIFS・SUMPRODUCTとの連携MONTH補助列を使った月別集計数式を作成できる★★★

まとめ:YEAR・MONTH・DAYは日付分解の基本ツール

本記事のポイントをまとめます。

  • 役割:日付シリアル値から年(YEAR)・月(MONTH)・日(DAY)の整数値を取り出す。戻り値は数値なので計算・比較に直接使える
  • 引数:日付型セル参照・TODAY()・DATE()・DATEVALUE()の結果を渡す。文字列の日付は#VALUE!エラーになるためDATEVALUEで変換する
  • 月別集計:MONTH補助列+SUMIFSまたはSUMPRODUCT+MONTH/YEARが実務の主な用途
  • 年度判定:IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1) で4月始まりの年度を正確に返す
  • DATE関数との連携:YEAR・MONTHの結果をDATE関数に渡すことで月初・翌月・月末など任意の日付を動的生成できる
  • TEXTとの使い分け:表示・文字列結合にはTEXT関数、計算・比較にはYEAR/MONTH/DAY関数を使う
  • MOS試験:TODAY()との組み合わせ・DATE関数への受け渡し・IF条件への組み込みが頻出

YEAR・MONTH・DAY関数はシンプルな1引数関数ですが、SUMIFSや条件付き書式・DATE関数と組み合わせることで日付処理の幅が大きく広がります。「日付セルをそのまま集計条件に使えない」と感じた場面では、まずこの3関数で成分を分解することを思い出してください。MOS試験では基本構文の正確な入力と、IF文・DATE関数との入れ子組み合わせを重点的に練習しておきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次