ExcelのYEAR関数で1905が表示されるときは、まずYEARの結果セルを「標準」に変更します。これで2024などの正しい年へ戻るなら、計算結果を日付形式で表示していたことが原因です。標準にしても1905のままなら、YEARへ渡した元データや、内側の計算結果を確認してください。
YEARの結果セルの表示形式と、YEARへ渡した値は別々に確認します。
最初の対処:YEARの結果セルを標準に変更する
=YEAR(A1)などの数式が入った結果セルを選択します。元の日付セルではなく、年を表示するセルを選びます。- ホーム → 数値の表示形式で「標準」を選びます。数値形式を使う場合は、小数点以下の桁数を0にします。
- 2024など、元の日付の年が表示されるか確認します。元の日付が2024年なのに1905のままなら、次の入力値の確認へ進みます。

まず結果セルを標準表示にして、「値そのものが1905」なのか「2024を1905と表示している」だけなのかを分けましょう。
なぜ数値2024が1905と表示されるのか
YEARは、日付に対応する年を整数で返す関数です。一方、Excelの日付は内部的に日付シリアル値という数値で扱われます。YEARの結果が2024でも、その結果セルを yyyy という日付の表示形式にすると、数値2024を日付シリアル値として見せます。1900日付システムではシリアル値2024は1905年7月16日に対応するため、年だけの表示が1905になります。
表示形式の変更でセルの値2024が別の値へ書き換わったわけではありません。「YEARが1905を計算した」場合と、「YEARは2024を返したが、画面には1905と表示した」場合を区別します。YEARの基本仕様は MicrosoftのYEAR関数 を参照してください。
再現例:YEARの値と画面表示を比べる
空のセルA1へ =DATE(2024,1,1)、B1へ =YEAR(A1) を入力すると、正しい日付から年を取り出す例を作れます。DATEは年・月・日から日付を作る関数です。文字列の日付の解釈に依存しない例として、DATEの公式仕様 を確認できます。以下は1900日付システムの例です。
| 操作・実際の値 | 表示形式 | 表示される値 | 確認する点 |
|---|---|---|---|
| A1に=DATE(2024,1,1) | 日付 | 2024/1/1 | 実際の値は日付シリアル値。1900日付システムでは45292。 |
| B1に=YEAR(A1) | 標準 | 2024 | YEARの計算結果は年を表す整数。 |
| 同じB1に=YEAR(A1) | ユーザー定義 yyyy | 1905 | 実際の値2024を日付シリアル値として表示している。 |
| A1へ数値2024を直接入力し、B1に=YEAR(A1) | B1は標準 | 1905 | 入力値2024自体が日付シリアル値としてYEARへ渡されている。 |
| C1に=TEXT(A1,”yyyy”)。A1は2024/1/1の正しい日付 | 標準 | 2024 | 結果は文字列。元の日付の値はA1へ残す。 |
標準にしても1905のまま:入力が年の数字になっていないか
A1へ「2024」という年の数値だけを入力して =YEAR(A1) とすると、YEARは2024を日付シリアル値として扱います。結果セルを標準にしても1905です。この場合、結果セルの表示形式だけでは直りません。
- 元データがすでに年の整数なら、
=A1のようにその値を参照します。年の数字へもう一度YEARを適用しません。 - 年・月・日を別列で持っている場合は、
=DATE(A1,B1,C1)で日付を作ります。年だけから任意の月日を補う場合は、業務上の意味を先に決めます。 - 日付を表示しているはずのA1を一時的に標準表示にし、値と数式を確認します。表示が2024でも、それが年の整数なのか文字列なのかを確かめます。
YEARがうまくいかないときは元データの種類を確認する
確認用の別セルで =ISNUMBER(A1) と =ISTEXT(A1) を使うと、数値と文字列を区別できます。ISNUMBER がTRUEでも、日付として妥当な値とは限りません。年だけの2024も数値です。仕様は IS関数 に示されています。
#VALUE!になる場合:文字列の日付、余分な空白、日付として解釈できない入力などを確認します。「日付」に書式を変更するだけで文字列が日付値へ変換されるとは限りません。- 文字列の日付を変換する場合:原本を残した別列でDATEVALUE等を使い、実際の年月日を確認します。日/月/年の並びは地域設定で解釈が変わる可能性があるため、見た目が似た文字列を一律変換しません。
- 空白や0の場合:YEARへ渡す前に空白や集計結果を確認します。1900と表示されたからといって、実際のデータに1900年の日付が存在するとは限りません。
Microsoftの 文字列として保存された日付の変換 は、日付の変換にDATEVALUEやエラーインジケーターを利用する方法を案内しています。文字列の日付は必ずYEARエラーになる、という断定も避けてください。文字列の内容や解釈によって結果が変わるため、実データで確認します。

見た目が日付でも、中身が日付の数値とは限りません。結果セルの書式を直しても解決しないときは、元セルの値・数式・データ型を確認してください。
MAXIFSとYEARを組み合わせる場合
タスク一覧のJ列に日付、C列に条件があり、C2と一致する行の最も遅い日付から年を取り出す例です。結果セルは標準または小数点0桁の数値形式にします。
=YEAR(MAXIFS($J$2:$J$46,$C$2:$C$46,C2))
ただし、J列に有効な日付が入り、条件に合う対象があることを確認して使います。MAXIFSは条件に一致するセルがない場合に0を返すため、そのままYEARへ渡すと期待しない年の表示につながります。MAXIFSの公式例 では、条件不一致で0、範囲の形・大きさが異なる場合に #VALUE! となることも確認できます。
- まず別セルK2へ
=MAXIFS($J$2:$J$46,$C$2:$C$46,C2)を入力し、集計結果を標準表示で確認します。必要に応じてK2を日付形式でも確認します。 - J列を正の現代の日付シリアル値に限定して管理している表なら、年のセルは
=IF(K2>0,YEAR(K2),"")として、0では空欄にする方法があります。 - この判定は日付データの正しさを保証しません。日付ではない正の数値が混ざる場合、元データの確認が必要です。
元の日付を残して年だけ表示する場合とTEXTの違い
| 目的 | 使う方法 | 保持される値 |
|---|---|---|
| 元の日付の値を維持し、年だけ見せる | 日付セルA1のユーザー定義表示形式を yyyy にする | 元の日付シリアル値のまま |
| 年を整数として取り出し、計算等に使う | =YEAR(A1)。結果セルは標準または数値 | 2024などの数値 |
| 年を文字列として出力・連結する | =TEXT(A1,”yyyy”) | “2024”などの文字列 |
TEXTは結果を文字列に変換します。TEXTの結果セル内部に日付の数値を保持するわけではありません。=TEXT(YEAR(A1),"0") も年の整数を文字列にする式で、日付を保持する式ではありません。元の日付は別セルに残し、計算には元データを参照します。根拠は TEXTの公式説明 です。
別ブックからコピーして約4年ずれる場合
Excelには1900日付システムと1904日付システムがあり、同じ日付のシリアル値は1462日違います。現行の新しいExcelは1900日付システムが基本で、Macだから必ず1904システム、とは判断できません。古いブックや変更されたブックでは設定を確認します。
Windowsではファイル → オプション → 詳細設定 → 「次のブックを計算するとき」の「1904年から計算する」を確認します。MacではExcelの環境設定から計算の設定を確認します。コピー先・元の設定と実際の値を比較し、全ブックの設定をむやみに切り替えないでください。詳しい条件と操作は Excelの日付システム を参照してください。
修正後に確認すること
- YEARの結果セルを標準表示にしたとき、元の日付に対応する年が出ること。
- 元の日付が必要な列では、年の整数やTEXTの文字列に置き換わっていないこと。
- MAXIFSの条件に一致する有効な日付がないケースで、意図しない1900年等を表示しないこと。
- 他のブックから取り込んだ日付は、既知の日付と照合してずれがないこと。

年を数値で取り出すならYEAR、日付のまま年だけ見せるなら表示形式、文字列で出力するならTEXT。目的に合わせて選ぶと、同じ1905の症状でも確認する箇所が分かります。



コメント