ExcelのYEAR関数で1905が返される原因と解決方法

Excelを使ってタスク管理をしていると、いつの間にか意図しない日付が表示されてしまう経験は意外と多いものです。とくにプロジェクトの終了日などを集計して「YEAR関数」で年だけを抜き出そうとしたのに、なぜか1905が返ってきて唖然とした…そんなお話を耳にすることもしばしば。実はこれ、セルの書式設定やExcel特有のシリアル値システムに深く関係しているんです。この記事では、私自身の体験談も交えながら「どうしてYEAR関数が1905を返してしまうのか」「どうやって正しい年を表示すればよいのか」を解説していきます。

ExcelでYEAR関数が1905を返してしまう背景

Excelは通常、日付を「シリアル値」という数値として内部的に扱っています。たとえばWindows版Excelの標準設定では、1900年1月1日をシリアル値1とし、そこから1日経つごとに1ずつ加算されていきます。ところが、入力や計算式によっては、予期せず別の値が返されてしまうこともあるのです。

セルの書式設定が原因になるケース

YEAR関数を使って「=YEAR(A1)」と入力すると、一見すると年だけが抜き出されるように思えます。しかし、セルの書式設定が「日付」のままだと、数値として返ってきた年がまた別の日付シリアル値に変換されてしまう可能性があります。結果として、1905や1900などの意図しない年が表示されるわけです。

日付シリアル値の誤解

ExcelにはWindows版とMac版で異なるシリアル値の起点(1900年1月1日を起点にするか、1904年1月1日を起点にするか)という歴史的な事情もあります。さらに、計算結果の数値そのものが「2024」のような数字であっても、Excelはそれを「シリアル値2024」と解釈し、結果として1905年という過去の日付になることがあります。

シリアル値の仕組みとよくある勘違い

シリアル値はExcelが日付や時刻を管理するための基本概念ですが、見慣れない方からすると想像以上にややこしいものです。たとえば2024という数字は単なる年を示しているのではなく、Excel内部では「1900年1月1日から2023日目」として取り扱われることになります。そこにユーザー定義などでyyyyなどを指定してしまうと、思わぬ年が表示されるというわけです。

実務でありがちなシチュエーション

タスクの最終日を集計して「MAXIFS」や「MAX関数」で最も遅い日付を出し、そのセルにYEAR関数をかける。プロジェクトの全期間を把握するための便利な計算式ですが、うっかりセルの表示形式を日付にしたままにしていると「変な年が出る!」と慌てる羽目になります。私も過去、プロジェクト管理表を作成していて、最終的に「期限年」を抜き出そうとした際、なぜか1905年が表示されて焦ったことがありました。

実際に私自身も最初は「1905って何事!?Excelバグった?」と勘違いして、ネット検索に奔走した覚えがあります。原因がセル書式だったと気づくまで、遠回りしてしまいました。

YEAR関数が1905を返す主な原因

セルにユーザー定義の「yyyy」が設定されている

最大の要因は、数値として返ってきた年に対してさらに日付書式が適用されていることです。YEAR関数の結果はあくまでも「2024」のような数値。しかしそれが「日付」として再解釈されると「シリアル値2024」としての日時、つまり1905年のどこかの日付が表示されてしまいます。

数値としての日付再解釈とは

Excelが「2024」という値を見た際、それを「日数」と認識し、1900年1月1日から2023日後の日付を表示しようとします。その結果が1905年7月16日あたりになる(使用しているシステムによって微妙にずれる場合があります)というわけです。

書式を日付から変更しないままYEAR関数を使うと、Excelがシリアル値を再度日付として解釈してしまい1905という結果になるケースが多発します。

別ブックで1904年始まりのシリアル値を使っている

Mac版のExcelや一部の設定では、1904年1月1日をシリアル値1とするシステムがあります。この設定が有効になっているブック同士でデータをコピー&ペーストすると、日数計算にズレが生じることがあります。そのせいで、YEAR関数を使った結果が変な年になってしまうことも珍しくありません。

複数のExcelファイル間で値をコピーしたときのトラブル

プロジェクト管理表をチーム内で共有し、MacユーザーとWindowsユーザーが入り混じって編集している場合、日付のズレが生じやすい状況です。実際に私の職場では、Macユーザーが作成したExcelからデータを受け取ったところ、YEAR関数が正しく動作しなくなったというトラブルが発生しました。その後、両者の設定を確認したところ1904年始まりと1900年始まりの違いを発見するに至りました。

正しい年を表示させるための対処方法

セルの書式を「標準」または「数値」に変更

YEAR関数の返り値を単純に4桁の数値として表示したい場合、まずは対象セルの書式設定を「標準」もしくは「数値」に切り替えることが最も簡単です。これにより「YEAR関数が返した年」をそのまま表示でき、1905などの望まない値が出力されるのを防止できます。

具体的な操作例

下記のようにYEAR関数を用いるとき、計算結果を入れるセルをあらかじめ「標準」にしておきましょう。すると、きちんと「2024」などの年数が表示されます。

=YEAR(MAXIFS($J$2:$J$46,$C$2:$C$46,C2))

この式に対して、セルの書式が日付だと誤作動してしまう可能性がありますが、標準や数値形式にしておけば問題ありません。

数値表示に切り替えることで、YEAR関数が返す「2024」などの年をそのまま正しく扱えます。

TEXT関数を利用して文字列として扱う

もし「表示上は4桁の年だけを表示したいが、内部的には日付として保持したい」などのケースがあるなら、TEXT関数を使って任意の形式に変換する方法もおすすめです。たとえば「=TEXT(YEAR(A1), “0”)」のようにすれば、文字列として年を表示できます。

TEXT関数の活用シーン

日付や時刻をレポートとして出力する際、あるいは他のシステムに取り込むために文字列で年を扱う必要があるとき、TEXT関数を利用することで見た目と実体をコントロールすることができます。私の場合、プロジェクト管理表から年だけを切り出して別のドキュメントに貼り付けるときによく使っています。

Excelの日付フォーマットを正しく把握するためのポイント

表示形式と実際の値は別もの

Excelに慣れていないと混同しがちですが、「セルの表示形式」はあくまでも見え方を制御するための設定であり、セル内の実際の数値(シリアル値や文字列など)とは違うものです。したがって、表示形式が日付になっていても、そのセルの値が実はテキストかもしれないし、あるいは数値かもしれません。

よくある勘違い:表示がyyyyだから年だけの数値だと思う

ユーザー定義でyyyyと書いてあっても、Excelはそのセルを日付として解釈することがあります。YEAR関数などで取り出した年が再び日付として読み込まれ、1905年など予期しない年月日を表示する原因になるのです。

シリアル値を確認するコツ

問題が起きたセルがどんな値を持っているか確認したいときは、セルの書式をいったん「標準」に変えてみると良いでしょう。そうすると、シリアル値や文字列のままの形で表示されるので、正しくデータが入っているかどうかを簡単に見極められます。

日付系トラブルを未然に防ぐための実践例

ここでは、日付まわりのトラブルを減らすために私が実際によく行っている手法を紹介します。

運用時のチェックルール

セルの書式確認を月初に行う

月の始めにプロジェクト管理表を更新するタイミングで、タスク終了日や集計結果のセルが正しく「日付形式」か「数値形式」になっているか確認するようにしています。これをルーティン化しておけば、誤ったままの設定で作業し続けるリスクを減らせます。

外部ファイルからデータを取り込んだら必ず標準に変えてチェック

共同作業では他の人が作ったExcelを取り込むことがよくあります。このとき、外部から取り込んだ日付がテキストとして認識されていないか、あるいは1904年シリアル値を使っていないかを疑うことが重要です。セルの書式を標準にしてみて、想定とは違う数値が表示されたら要注意です。

私の経験上、一番多いのはテキスト形式で日付が入っているケースでした。見た目は日付なのに実際は文字列なので計算がうまくいかないんです。

トラブルシューティング表:表示形式と実際の値の関係

以下の表は、よくある設定と表示のずれをまとめたものです。自分のセルがどのパターンに当てはまるかチェックしてみると、問題解決の糸口が見つかるかもしれません。

セルの実際の値 セルの書式設定 画面上の表示例 YEAR関数を適用した場合
44889 (Excelの日付シリアル値で2023/0x/xx相当) 標準 44889 2023
44889 日付(yyyy/m/d) 2023/1/1 YEAR(44889)→2023
2023 (単なる数値) 日付(yyyy) 1905 YEAR(2023)→1905
2023 標準 2023 YEAR(2023)は2023と認識されず、シリアル値2023として解釈される
“2023/1/1″(文字列) 標準 2023/1/1 テキスト扱いのためYEAR関数エラー

この表からもわかるように、セルの実際の値と書式設定によって表示や関数の結果が大きく変わってくることが一目瞭然です。

まとめ:1905が返ってきたらセルの書式を疑おう

ExcelでYEAR関数を使ったときに1905が表示されてしまう原因の多くは、セル書式の不一致やシリアル値の扱いにあります。プロジェクト管理やスケジュール管理など、複数の終了日や開始日を集計するケースでは、特にこのズレが顕在化しやすいです。

対処のキーポイント

YEAR関数の返り値は単なる数値

シリアル値ではなく「年」という数値が出るだけです。だからこそセルを数値や標準で扱うことが大切です。

日付表示にこだわりたいならTEXT関数を使う

「YYYY形式で見やすくしたい」という場合は、内部的に数値を持たせつつ、表示だけ文字列に変換するテクニックが有効です。

他の利用者が日付システムを1904年始まりにしている可能性もあるので、共同作業ファイルでは特に注意しましょう。

さいごに

私自身、初めてこのトラブルに遭遇したときは何時間も原因がわからず混乱しましたが、Excelの日付シリアル値の仕組みやセル書式の扱いを理解してからは怖いものがなくなりました。もし皆さんの管理表でも「なんで1905が出るの?」と困っている人がいたら、ぜひこの記事の内容を参考にしてみてください。

Excelは奥が深く、ときに厄介ですが、一度仕組みを知ってしまえば逆に大きな武器にもなるツールです。ぜひ楽しみながら覚えていってくださいね。

コメント

コメントする