「日付データから年だけを取り出して、年度ごとに集計したい」。こんな場面はありませんか?
手作業で年を書き写していると、データが増えたときに大変ですよね。入力ミスも起きやすいです。
GoogleスプレッドシートのYEAR関数を使えば、日付から年(西暦4桁)を一発で取り出せます。
この記事では、YEAR関数の基本から年度判定・年ごとの集計まで、実務で使えるテクニックをまとめて紹介します。
YEAR関数とは?スプレッドシートで日付から年を取り出す関数
YEAR関数(読み方: イヤー関数)は、日付データから「年」の部分だけを数値として取り出す関数です。
名前は英語の「year(年)」がそのまま関数名になっています。
たとえばセルに「2026/3/19」という日付が入っていれば、YEAR関数は「2026」を返します。とてもシンプルですね。
YEAR関数でできることをまとめると、次のとおりです。
- 日付から年(西暦4桁)を数値で取り出す
- TODAY関数と組み合わせて「今年の西暦」を動的に取得する
- IF関数と組み合わせて年度(4月始まり等)を判定する
- SUMPRODUCT関数と組み合わせて年ごとの集計を行う
NOTE
YEAR関数はGoogleスプレッドシートの全バージョンで使えます。Excelでも同じ構文で動作するので、ファイル共有時も安心です。
YEAR関数の基本の書き方
構文と引数
=YEAR(日付)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 日付 | 必須 | 年を取り出したい日付データ。セル参照、DATE関数の戻り値、日付として認識される文字列を指定できます |
引数はたった1つだけです。覚えやすいですよね。
戻り値
YEAR関数は1900〜9999の範囲の整数を返します。「2026/3/19」なら「2026」、「1990/1/1」なら「1990」です。
返すのは数値です。文字列ではありません。そのため、取り出した年をそのまま計算に使えますよ。
入力例
=YEAR(A2) … セルA2の日付から年を取得
=YEAR(TODAY()) … 今日の日付から年を取得(今年の西暦)
=YEAR("2026/3/19") … 日付文字列から年を取得 → 2026
基本的な使い方|日付から年だけを取り出す
実際の使い方を見てみましょう。受注日の一覧から年を取り出すケースです。
| A列(受注日) | B列(年) | |
|---|---|---|
| 2行目 | 2024/8/15 | =YEAR(A2) → 2024 |
| 3行目 | 2025/3/1 | =YEAR(A3) → 2025 |
| 4行目 | 2026/12/20 | =YEAR(A4) → 2026 |
B2セルに =YEAR(A2) と入力するだけです。あとは下方向にコピーすれば、すべての行の年を取り出せます。
YEAR関数の結果は数値なので、フィルタで「2025」だけに絞り込んだり、ピボットテーブルの行に配置したりできます。
TIP
「今年の西暦」を取得するなら
=YEAR(TODAY())が便利です。TODAY関数が今日の日付を返し、YEAR関数がそこから年を取り出します。ファイルを開くたびに自動更新されますよ。
実務で使えるYEAR関数の活用例
年度を判定する(YEAR + IF)
日本の会社では4月始まりの「年度」を使うことが多いですよね。YEAR関数とIF関数を組み合わせれば、日付から年度を自動判定できます。
=IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1)
この数式のポイントは次のとおりです。
- MONTH関数で月を取り出す(1〜12の数値)
- 4月以降(4〜12月)なら、その年がそのまま年度
- 1〜3月なら、前年が年度(YEAR(A2)-1)
具体例で確認してみましょう。
| 日付 | 月 | 年度の計算結果 |
|---|---|---|
| 2026/6/15 | 6(4月以降) | 2026年度 |
| 2026/2/10 | 2(3月以前) | 2025年度 |
| 2025/4/1 | 4(4月以降) | 2025年度 |
| 2025/3/31 | 3(3月以前) | 2024年度 |
4月1日と3月31日で年度が変わるのがわかりますね。
TIP
年度の開始月が4月以外の場合は、数式の「4」を変更してください。たとえば10月始まりなら
=IF(MONTH(A2)>=10, YEAR(A2), YEAR(A2)-1)です。
年ごとに集計する(SUMPRODUCT + YEAR)
「年ごとの売上合計を出したい」という場面では、SUMPRODUCT関数とYEAR関数を組み合わせます。
=SUMPRODUCT((YEAR(A2:A100)=2026)*B2:B100)
この数式は、A列の日付が2026年の行だけを対象に、B列の金額を合計します。
数式の仕組みを分解すると、次のとおりです。
YEAR(A2:A100)で各行の年を取り出す=2026で2026年かどうかを判定(TRUE/FALSE)- TRUEは1、FALSEは0として金額と掛け算される
- SUMPRODUCTが合計を返す
ちょっとむずかしく見えますが、やっていることはシンプルです。「年が一致する行だけ合計する」という意味ですよ。
NOTE
SUMIF関数で
=SUMIF(A2:A100, "2026", B2:B100)のように年を文字列で指定しても、日付と年は型が違うため正しく集計できません。SUMPRODUCT+YEAR関数の組み合わせを使いましょう。
今年の売上を動的に集計したい場合は、「2026」の部分をYEAR(TODAY())に置き換えます。
=SUMPRODUCT((YEAR(A2:A100)=YEAR(TODAY()))*B2:B100)
年ごとの件数を数える(SUMPRODUCT + YEAR)
「年ごとの売上合計」だけでなく、「年ごとに何件あったか」を数えたい場面も多いですよね。契約件数や問い合わせ件数の集計です。
これもSUMPRODUCT関数とYEAR関数で実現できます。合計のときの「金額範囲」を「1」に置き換えるだけです。
=SUMPRODUCT((YEAR(A2:A100)=2026)*1)
A列の日付が2026年の行だけを「1」として数え上げます。最後の *1 がTRUE/FALSEを数値の1/0に変換する役割です。
仕組みは合計のときと同じで、次のように動きます。
YEAR(A2:A100)で各行の年を取り出す=2026で2026年かどうかを判定(TRUE/FALSE)*1でTRUEを1、FALSEを0に変換する- SUMPRODUCTが1の個数(=件数)を合計する
今年の件数を動的に数えたいなら、2026 を YEAR(TODAY()) に置き換えてください。ファイルを開くたびに自動更新されますよ。
=SUMPRODUCT((YEAR(A2:A100)=YEAR(TODAY()))*1)
TIP
日付範囲で数える方法もあります。
=COUNTIFS(A2:A100, ">="&DATE(2026,1,1), A2:A100, "<="&DATE(2026,12,31))のようにDATE関数で年初と年末を指定する書き方です。YEAR関数を使わずに範囲指定したいときはこちらが便利ですが、年が増えるたびに条件を書き換える手間があります。複数年をまとめて扱うならSUMPRODUCT+YEAR関数のほうが応用しやすいですよ。
ARRAYFORMULA と組み合わせる(補助列を使わない方法)
=YEAR(A2) を下方向にコピーするのが基本ですが、データが日々増える表だと、コピー範囲が足りなくなることがありますよね。
そんなときはARRAYFORMULA関数と組み合わせると、1か所の入力だけで全行に年を展開できます。
=ARRAYFORMULA(YEAR(A2:A100))
B2セルにこの1行を入れるだけで、A2からA100までの年が一括で表示されます。新しい行を追加しても範囲内なら自動で計算されますよ。
ただし、空白セルがあると YEAR("") がエラーになる点に注意してください。空白行を含む範囲では、IF関数でガードを入れます。
=ARRAYFORMULA(IF(A2:A100<>"", YEAR(A2:A100), ""))
これで「A列が空でない行だけ年を表示し、空白行は何も表示しない」という挙動になります。年度判定をARRAYFORMULA化したい場合も、同じ考え方でIF関数を組み合わせればOKです。
=ARRAYFORMULA(IF(A2:A100<>"", IF(MONTH(A2:A100)>=4, YEAR(A2:A100), YEAR(A2:A100)-1), ""))
補助列を毎回コピーする手間がなくなるので、フォーム回答やインポートデータのように行数が変動する表で重宝します。
生年月日から生まれ年・年代を取り出す
YEAR関数は受注日や売上日だけでなく、人事や会員管理でも活躍します。社員台帳や顧客リストで「生まれ年」を列に追加したいケースですね。
生年月日から生まれ年を取り出すのは、いつもどおりYEAR関数だけです。
=YEAR(A2) … 生年月日のセルから生まれ年を取得
さらに「1980年代」「1990年代」のように年代で分類したいときは、INT関数を組み合わせます。
=INT(YEAR(A2)/10)*10
この数式は、生まれ年を10で割って小数点以下を切り捨て、また10を掛けることで「下1桁を0にする」処理です。
| 生年月日 | 生まれ年 | 年代の計算結果 |
|---|---|---|
| 1985/7/3 | 1985 | 1980 |
| 1992/12/1 | 1992 | 1990 |
| 2001/4/20 | 2001 | 2000 |
="("&INT(YEAR(A2)/10)*10&"年代)" のように文字列と結合すれば、「1980年代」という表示も作れます。
NOTE
「年齢」を計算したい場合はYEAR関数ではなく、DATEDIF関数が向いています。YEAR関数で年だけを引き算すると誕生日前後で1歳ずれることがあるためです。「生まれ年だけ欲しい」「年代で分類したい」という用途ならYEAR関数が最適ですよ。
N年後の日付を求める(DATE + YEAR)
契約更新日や資格の有効期限など、「N年後の日付」が必要な場面もありますよね。DATE関数とYEAR関数を組み合わせれば計算できます。
=DATE(YEAR(A2)+N, MONTH(A2), DAY(A2))
たとえば3年後の日付を求めるなら、次のように書きます。
=DATE(YEAR(A2)+3, MONTH(A2), DAY(A2))
| 基準日 | 3年後 |
|---|---|
| 2026/3/19 | 2029/3/19 |
| 2024/2/29 | 2027/3/1(うるう年の調整) |
2月29日の3年後は2月29日が存在しないため、自動的に3月1日に繰り上がります。DATE関数のロールオーバー機能のおかげです。
今年・去年を動的に判定する(TODAY + YEAR)
「今年のデータだけを色付けしたい」「去年と今年で分けたい」という場面では、TODAY関数との組み合わせが便利です。
=YEAR(A2)=YEAR(TODAY()) … 今年のデータかどうか(TRUE/FALSE)
=YEAR(A2)=YEAR(TODAY())-1 … 去年のデータかどうか
条件付き書式のカスタム数式にも使えます。「今年のデータだけ背景色を変える」といった設定が簡単にできますよ。
YEAR・MONTH・DAY関数の違いと使い分け
YEAR関数には姉妹関数としてMONTH関数とDAY関数があります。3つセットで覚えておくと便利です。
| 関数 | 読み方 | 取り出す要素 | 戻り値の範囲 | 入力例(2026/3/19) | 結果 |
|---|---|---|---|---|---|
| YEAR | イヤー | 年 | 1900〜9999 | =YEAR(A2) | 2026 |
| MONTH | マンス | 月 | 1〜12 | =MONTH(A2) | 3 |
| DAY | デイ | 日 | 1〜31 | =DAY(A2) | 19 |
3関数とも構文は同じで =関数名(日付) です。引数も1つだけなので、迷うことはありません。
この3関数を組み合わせると、日付の分解と再構築が自由にできます。
=DATE(YEAR(A2), MONTH(A2), DAY(A2))
上の数式はA2の日付をいったんYEAR・MONTH・DAYで分解し、DATE関数で再構築しています。このパターンは「年だけ変える」「月だけずらす」といった加工の基本形です。
TIP
日付を「2026年3月」のようにテキスト表示したい場合は、TEXT関数を使ってください。
=TEXT(A2, "yyyy年m月")で書式付きの文字列に変換できます。
ピボットテーブルで年ごとに集計する方法との違い
「SUMPRODUCT+YEAR関数の数式がむずかしい」と感じたら、ピボットテーブルという選択肢もあります。マウス操作で年ごとの集計ができる機能です。
ピボットテーブルでは、日付の列を「行」に配置し、右クリックから「年でグループ化」を選ぶと、年単位の集計表が作れます。数式を一切書かずに、年ごとの売上や件数を出せるのが魅力です。
数式とピボットテーブル、それぞれの向き不向きを整理すると次のとおりです。
| 比較項目 | YEAR関数による数式 | ピボットテーブル |
|---|---|---|
| 更新 | データが増えると自動更新 | 手動で更新が必要なことがある |
| 操作 | 数式の理解が必要 | マウス操作で直感的 |
| 結果の活用 | 別シート・別の数式に組み込める | 表として独立しやすい |
| 条件の細かさ | 年度・複数条件を自由に設定 | グループ化の単位に依存 |
ざっくり言うと、「集計結果を別の計算に使いたい」「自動で更新したい」なら数式、「とりあえず手早く眺めたい」ならピボットテーブル、という使い分けです。
YEAR関数を覚えておけば、ピボットテーブルでは作りにくい「4月始まり年度での集計」なども柔軟に対応できます。両方を場面で使い分けられると、集計作業がぐっと楽になりますよ。
よくあるエラーと対処法
#VALUE! エラー
YEAR関数で最もよくあるエラーです。原因は引数が日付として認識できないことです。
| 原因 | 入力例 | 対処法 |
|---|---|---|
| 文字列の日付 | =YEAR("令和8年") | 西暦の日付形式に変換する |
| 数値の文字列 | =YEAR("2026") | =YEAR(DATEVALUE("2026/1/1")) に変更 |
| 空白セル | =YEAR("") | IF関数で空白チェックを追加 |
「2026/3/19」のような形式の文字列ならYEAR関数で認識できます。ただし「令和8年」や「R8」のような和暦は認識できませんので注意してください。
意図しない年が返る
日付に見えて実は文字列になっているセルがあります。セルの左上に小さな緑の三角マークが出ていたら要注意です。
「表示形式」→「数字」→「日付」で日付型に変換するか、DATEVALUE関数で文字列を日付に変換してからYEAR関数を使ってください。
YEAR関数 よくある質問
YEAR関数を使っていてつまずきやすいポイントを、Q&A形式でまとめました。
Q1. 「2026/3/19」と入力したのに、年が「1905」など変な値になります
セルの表示形式が「数値」になっていて、日付が日付シリアル値(数値)として扱われている可能性があります。この場合、YEAR関数はその数値を別の日付として解釈してしまいます。
対処法は2つあります。1つはセルの表示形式を「日付」に変更すること。「表示形式」→「数字」→「日付」で切り替えられます。
もう1つは、数式内で直接DATE関数を使う方法です。=YEAR(DATE(2026,3,19)) のように書けば、確実に日付として認識されますよ。
Q2. YEAR関数で「1900」や「1899」が返ってきます
参照先のセルが空白になっていないか確認してください。空白セルは「0」として扱われ、シリアル値の0は1899年12月30日を指すため、YEAR関数が1899や1900を返してしまいます。
対処法はIF関数で空白チェックを入れることです。
=IF(A2<>"", YEAR(A2), "")
これで「A2が空白なら何も表示せず、日付が入っていれば年を返す」という動きになります。集計表で空白行が混ざるときに特に有効です。
Q3. テキスト形式の「2026年3月19日」から年を取り出したいです
「年」「月」「日」を含む和暦風のテキストは、そのままではYEAR関数で認識できません。=YEAR("2026年3月19日") は#VALUE!エラーになります。
一番おすすめなのは、最初から「2026/3/19」という日付形式で入力することです。これがいちばん手間がかかりません。
すでにテキストで入力済みの場合は、SUBSTITUTE関数で「年」「月」をスラッシュに置き換え、DATEVALUE関数で日付に変換してからYEAR関数に渡します。
=YEAR(DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"年","/"),"月","/"),"日","")))
ただし数式が複雑になるので、データが大量にある場合は入力ルール自体を「日付形式」に統一するのが現実的ですよ。
Q4. インポートしたデータが「2026-03-19T00:00:00Z」のような形式で年が取り出せません
外部システムからのデータはISO 8601形式(2026-03-19T00:00:00Z)になっていることがあります。後半の時刻部分が邪魔をして、YEAR関数が認識できないケースです。
LEFT関数で先頭10文字(日付部分)だけを取り出し、DATEVALUE関数で日付に変換すれば解決できます。
=YEAR(DATEVALUE(LEFT(A2,10)))
LEFT(A2,10) で「2026-03-19」だけを抜き出し、DATEVALUE関数が日付型に変換、最後にYEAR関数が年を取り出す、という流れです。インポートデータの加工で覚えておくと便利ですよ。
まとめ
この記事では、スプレッドシートのYEAR関数の使い方を解説しました。
| 項目 | 内容 |
|---|---|
| 構文 | =YEAR(日付) |
| できること | 日付から年(西暦4桁)を数値で取り出す |
| 姉妹関数 | MONTH(月)・DAY(日) |
| 年度判定 | =IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1) |
| 年ごと集計 | =SUMPRODUCT((YEAR(範囲)=年)*金額範囲) |
| N年後の日付 | =DATE(YEAR(A2)+N, MONTH(A2), DAY(A2)) |
YEAR関数は単体でも便利ですが、IF関数やSUMPRODUCT関数と組み合わせると活用の幅がぐっと広がります。まずは =YEAR(A2) で年を取り出すところから試してみてくださいね。
日付操作をもっと知りたい方は、DATE関数の使い方やTODAY関数の使い方もあわせてチェックしてみてください。

