日付が数値やシリアル値で表示されてしまう問題の直し方

セルに日付を入力したはずなのに、表示されるのは「2026/1/1」ではなく「46023」のような5桁の数字。コピーやオートフィルの直後、あるいはCSVを読み込んだ直後によく起こるトラブルです。結論から言うと、Excelは日付を1900年1月1日を1とする通し番号(シリアル値)で内部管理しており、セルの表示形式が「日付」から外れると、その通し番号がそのまま数字で見えてしまうのが原因です。この記事では、シリアル値の仕組みと、症状別に3つの原因・直し方を解説します。

目次

日付がシリアル値になる仕組み

Excelにとって日付は特別なデータ型ではなく、実体は「1900/1/1」を1として数え上げた整数(シリアル値)です。セルには常にこの整数が格納されていて、表示形式が「日付」のときだけ人が読める「yyyy/mm/dd」のような形に変換して見せています。つまり「46023」という数字も「2026/1/1」という表示も、Excelの中では同じ値だということです。

A(日付) 本来の表示 書式が外れたときの表示(シリアル値)
A2 2026/1/1 46023
A3 2026/8/29 46263
A4 2026/12/31 46387

シリアル値のまま表示されてしまう3つの原因

1. セルの表示形式が「標準」に戻っている

A2セルに日付を入力しても、書式が「標準」(既定の書式)のままだと、Excelはシリアル値をそのまま数字として表示します。数式の計算結果として日付を返す場合(例えば別のセルからDATE関数で日付を作る場合)も、参照元・計算結果のセルにあらためて日付書式を設定しないと数字のままになります。「ホーム」タブの数値の書式欄で「日付」または「短い日付形式」を選び直せば表示が直ります。

2. CSV等の外部データで日付が「文字列」として入っている

Web上の表やCSVファイルからコピーした日付は、見た目が「2026/1/1」でも実体はただの文字列で、シリアル値化されていないことがあります。この状態で書式を「日付」に変えても数字はいっさい変わりません。文字列の日付をシリアル値に変換するにはDATEVALUE関数を使います。

A2セルに文字列として「2026/1/1」が入っているとします。

=DATEVALUE(A2)

この数式は46023を返します。得られたシリアル値のセルに日付書式を設定すれば、正しく「2026/1/1」と表示されるようになります。

3. 日付同士の引き算の結果が、意図せず日付形式で表示される

逆に「日数を数字で知りたいのに、なぜか日付のような表示になる」という反対方向のトラブルもあります。A2に開始日、A3に終了日が入っているとします。日数を求める数式は次のとおりです。

=A3-A2

2026/8/29から2026/1/1を引くと本来は240(日数)という数字が欲しいのですが、Excelは「日付から日付を引いた結果もまた日付だろう」と自動で判断し、セルの書式を日付形式に引き継いでしまうことがあります。この場合は結果セルの書式を手動で「標準」または「数値」に変更すれば、240という日数がそのまま表示されます。

よくあるエラー・注意点

  • 書式を変えるだけで直る場合と、再入力が必要な場合がある: シリアル値が既に格納されている(原因1)なら書式変更だけで直ります。文字列のまま格納されている(原因2)場合は書式変更だけでは直らず、DATEVALUE等での変換が必要です。
  • 表示形式を「文字列」ではなく「日付」の中の任意の形式にする: 「yyyy年m月d日」「yyyy/mm/dd」などはすべて同じシリアル値の見た目を変えているだけなので、計算に影響しません。
  • 1900年より前の日付・シリアル値0はExcelで扱えない: シリアル値0は「1900/1/0」という架空の日付として扱われ、通常の日付計算には使えません。
  • 日付を範囲指定した集計と組み合わせるときも仕組みは同じ: SUMIFで日付範囲を指定して集計する方法で日付範囲を条件にできるのも、内部的には日付がシリアル値という単なる数値だからです。

まとめ

日付がシリアル値のまま表示される主な原因は、セルの表示形式が「標準」に戻っている、外部データが文字列のまま格納されている、日付の引き算結果に日付書式が引き継がれてしまう、の3つです。まず数字が入っているセルの表示形式を確認し、書式変更で直らなければDATEVALUE関数で文字列を変換しましょう。ピボットテーブルで日付ごとに集計している場合、元データの日付が文字列のままだと正しくグループ化されないことがあるため、ピボットテーブルが更新されないときの対処法とあわせて確認しておくと安心です。

目次