会計や学校、プロジェクト管理では、西暦と期首のズレを踏まえた年度の算出が必須です。
手作業で判断するとミスが起きやすく、集計にも時間がかかります。
本記事では、エクセルの関数だけで年度を確実に求める方法を体系化し、4月始まりはもちろん任意の期首にも対応できる式を示します。
最新情報です。
四半期や上期下期の導出、和暦ラベルや実務の落とし穴まで、現場でそのまま使える形で解説します。
目次
エクセルの関数で年度を正しく求める基本と考え方
年度とは、任意の期首から翌年の期末までを一つの会計期間として扱う考え方です。
日本の一般的なケースでは4月1日から翌年3月31日までを一年度とします。
このずれを関数で表現するコツは、日付を数か月シフトしてからYEARで西暦を取り出すことにあります。
年のシフトはEDATE関数で安全に行えます。
例えば4月始まりなら3か月戻してからYEARで年を取得すると、1〜3月は前年として扱われます。
IFで月の大小を判定する方法や、日数加算で簡略化する方法もありますが、可読性や堅牢性の観点でEDATE法が定番です。
年度と期首の定義を式に落とす発想
年度の本質は期首の月を基準に、属する年を決めるルール化にあります。
月のシフト量は期首月から1を引いた数なので、式ではmを期首月とすると、シフトはm−1か月になります。
この発想をそのまま式にすると、YEAR(EDATE(日付, −(m−1)))で年度の西暦が求まります。
4月始まりならm=4なので−3か月のシフトになり、1〜3月は前年の年度に入ります。
最短の答えを先に提示
4月始まりの年度の西暦を求める最短の式は次のいずれかです。
=YEAR(EDATE(A2,-3))
=YEAR(A2)-(MONTH(A2)<4)
結果を年度ラベルにするなら次です。
=YEAR(EDATE(A2,-3))&"年度"
まずはこれを覚えてから、汎用化や周辺機能へ広げると効率的です。
関数選択の基準
可読性、汎用性、データの健全性の三点で評価します。
EDATE×YEARは可読性と堅牢性に優れ、IF法は分かりやすさ、日数加算法は短さが強みです。
再利用やチーム運用では、期首月をセル参照にしてLETやLAMBDAで包むと、保守性が飛躍的に高まります。
以降で順に解説します。
4月始まりの年度を求める定番式

日本で最も多い4月始まりのケースに絞って、三つの代表的な式を比較します。
計算対象日付をA2に入れた例で説明します。
EDATE×YEAR法が基本
式は次の通りです。
=YEAR(EDATE(A2,-3))
ロジックは、日付を3か月戻してから西暦を取り出すだけです。
月の長さやうるう年に左右されず、意味も読み取りやすいので実務の第一候補になります。
IFで月を判定する素直な式
式は次の通りです。
=IF(MONTH(A2)<4,YEAR(A2)-1,YEAR(A2))
1〜3月なら前年、それ以外は今年という素直な表現です。
判定ロジックが可視化される一方で、条件が増えると式が長くなりがちです。
92日加算のショートカット
式は次の通りです。
=YEAR(A2+92)
1〜3月に92日を足すと4月以降へ進む性質を利用した書き方です。
短くて便利ですが、意図が伝わりにくいことと、日付のシリアルが不正な場合に気づきにくい点が注意です。
三方式の比較
| 方法 | 例式 | 長所 | 注意点 |
|---|---|---|---|
| EDATE×YEAR | =YEAR(EDATE(A2,-3)) |
意味が明快で堅牢 | EDATEに馴染みがないと読みにくい場合がある |
| IF判定 | =IF(MONTH(A2)<4,YEAR(A2)-1,YEAR(A2)) |
ロジックが直感的 | 条件が増えると冗長になりやすい |
| 日数加算 | =YEAR(A2+92) |
最短で書ける | 意図が伝わりにくい |
年度ラベルの付与
数値ではなくラベルとして出力したい場合は文字列連結します。
=YEAR(EDATE(A2,-3))&"年度"
ピボットや並べ替えを見据えて、別列で数値の年度とラベルを分ける運用が実務では安全です。
用途別に列を分けることで表示と集計を両立できます。
期首が任意の年度計算に拡張する

海外拠点や組織によって、7月や10月始まりなど期首はさまざまです。
セル参照とLETで汎用式にすれば、一つの式で全パターンをカバーできます。
セル参照で柔軟化
期首月をB1に入れておき、次の式で年度の西暦を求めます。
=YEAR(EDATE(A2,-($B$1-1)))
B1に4なら4月始まり、7なら7月始まりです。
B1を変えるだけで全行の年度が自動で切り替わるため、メンテナンス性が高いです。
LETで読みやすく安全に
名前を付けると式の意図が明確になります。
=LET(d,A2,m,$B$1,YEAR(EDATE(d,-(m-1))))
中間値に名前をつけることで、チーム内レビューや将来の改修での事故を防げます。
また、同じ計算の繰り返しを避けられるため、わずかですが高速化にも寄与します。
LAMBDAで自作関数化
名前の定義で次のLAMBDAを登録すると、自作関数として再利用できます。
=LAMBDA(d,m, YEAR(EDATE(d,-(m-1))))
例えば関数名をFYにすれば、=FY(A2,$B$1)のように使えます。
モデルを複数ファイルに展開する場合に特に有効です。
1日始まりでない特殊ケース
期首が毎年月初でない場合、期首日をC1に入れて判定を追加します。
=LET(d,A2,m,$B$1,day,$C$1, YR, YEAR(EDATE(d,-(m-1))), IF(AND(MONTH(d)=m,DAY(d)<day),YR-1,YR))
月初以外の運用は例外が増えやすいため、可能なら期首を月初に揃える運用を推奨します。
どうしても外せない場合にのみ条件を追加します。
年度の四半期や上期下期を関数で導出
年度の西暦が出せたら、同じロジックで四半期や上期下期も自動化できます。
可視化やダッシュボードでも使い回せる設計にしておくと便利です。
年度内の月番号を求める
期首をB1としたとき、年度内での月番号は次で求まります。
=MOD(MONTH(A2)-$B$1,12)+1
結果が1〜12になり、期首月が1となります。
この値を基に四半期や上期下期を計算します。
四半期Qの算出
上で求めた月番号をtとすると、四半期は次です。
=INT((MOD(MONTH(A2)-$B$1,12)+1-1)/3)+1
ラベルにするなら、="Q"&(INT((MOD(MONTH(A2)-$B$1,12))/3)+1))が手軽です。
ピボットでの並べ替えを意識し、数値のQとラベルのQを分離しておくと整列が安定します。
上期下期の区分
上期は月番号1〜6、下期は7〜12です。
=IF(MOD(MONTH(A2)-$B$1,12)+1<=6,"上期","下期")
区分値はダッシュボードのスライサーでも活用できます。
レポートの軸として使う列は、スペースや全角半角を揃えておくと、集計が安定します。
年度ラベルの整形と和暦表示のコツ

集計軸は数値、それとは別に人が読むラベルを用意すると運用がスムーズです。
和暦や複合ラベルの作り分けも、関数で自動化できます。
西暦の年度ラベル
シンプルな年度ラベルは次です。
=YEAR(EDATE(A2,-($B$1-1)))&"年度"
年度の範囲を示すラベルもよく使います。
=YEAR(EDATE(A2,-($B$1-1)))&"年度("&TEXT(DATE(YEAR(EDATE(A2,-($B$1-1))),$B$1,1),"yyyy/mm/dd")&"〜"&TEXT(EOMONTH(DATE(YEAR(EDATE(A2,-($B$1-1)))+1,$B$1,1),-1),"yyyy/mm/dd")&")"
和暦で年度を表示
和暦は日付に対してTEXTで表示形式を適用します。
年度の年をfY、期首月をB1として、期首日のダミー日付に和暦を当てます。
=LET(fY,YEAR(EDATE(A2,-($B$1-1))), TEXT(DATE(fY,$B$1,1),"ggge年")&"度")
和暦の表示はシステムのロケールと表示形式に依存します。
配布先の環境差で表示が変わる可能性があるため、必要に応じて西暦ラベルも併記してください。
TEXTの罠と数値保持のすすめ
TEXTで文字列化した列は、並べ替えや数値ソートで意図と違う順になることがあります。
ピボットの集計軸は数値の年度を使い、表面の見栄えはラベル列で行う二段構えが安全です。
また、日付の小数点以下の時刻成分があると意図しない表示になる場合があります。
DATEなどで日付を再構成するか、INTで日付だけに揃えてから処理してください。
実務での落とし穴とメンテナンス戦略
式そのものが正しくても、入力データの質や設計の癖で誤差が生じます。
よくある落とし穴を事前に潰しておきましょう。
日付が文字列のまま問題
スラッシュ区切りでも文字列として読み込まれると、YEARやMONTHがエラーになります。
その場合はDATEVALUEか、VALUEと置換でシリアル化します。
安全策として、取り込み直後に次のように正規化する列を用意すると良いです。
=DATE(YEAR(A2),MONTH(A2),DAY(A2))
1900と1904のシリアル差
ブックによっては1904日付システムが有効なことがあり、日付が約4年ずれることがあります。
年度が合わない場合は、まず対象ブックの日時システム設定を確認してください。
再計算タイミングとTODAYの扱い
今日基準で年度を出す式は便利ですが、再計算のタイミングで結果が変わります。
月次レポートでは、締め時点の値を値貼り付けで固定し、監査可能性を担保するのが定石です。
チェックリスト
- 入力は正しいシリアル日付か
- 期首月はセル参照や名前で一元管理しているか
- 年度(数値)と年度ラベル(文字列)を分離しているか
- 四半期や上期下期は年度内月番号から派生させているか
- 共有先の和暦表示が環境依存で崩れないか
テーブルとスピルで運用を軽くする
表形式にしたデータは構造化参照で読みやすく、行の増減にも強くなります。
関数は可能な限り先頭セルにまとめ、スピルで広げると軽量です。
例えばテーブル名がTで日付列が[日付]なら、=LET(d,T[日付],m,$B$1, YEAR(EDATE(d,-(m-1))))のように一括計算できます。
拡張や修正の影響範囲が明確になり、事故を防げます。
まとめ
年度計算の定石は、期首月を基準に日付をシフトしてからYEARで年を取り出すことです。
4月始まりなら=YEAR(EDATE(対象日付,-3))が第一選択になります。
期首が任意でも、=YEAR(EDATE(対象日付,-(期首月-1)))で統一できます。
セル参照、LETやLAMBDAで包めば実務の運用コストを大幅に削減できます。
四半期や上期下期は年度内月番号を起点に派生させ、数値の年度と文字列ラベルを分離して管理してください。
データ正規化、表示と集計の分離、環境差への配慮が精度と再現性を高める鍵です。
本稿の式と設計指針をひな形に、あなたの現場の期首やレポート様式へ置き換えれば、そのまま実戦投入できます。
迷ったらEDATE×YEARに立ち返り、短く、読みやすく、壊れにくい年度計算を徹底しましょう。
コメント