Excelやスプレッドシートで日付が45000みたいな数字になる
その数字は「シリアル値」と呼ばれる日付の通し番号で、日付のデータ自体は壊れていません。Excelならセルを右クリック→「セルの書式設定」→「日付」、Googleスプレッドシートなら「表示形式」→「数字」→「日付」を選ぶと、元の日付表示に戻ります。
Excelは日付を1900年1月1日からの日数で持っている
日付を入れたセルが「45000」のような数字になる——ExcelでもGoogleスプレッドシートでも起こります。ふだんは 表示形式 という設定がこの通し番号を「2023/3/15」の見た目に変えていて、それが「標準」や「数値」に変わると素の番号がそのまま見えます(Microsoft公式: Excelの日付システム)。Googleスプレッドシートも仕組みは同じです。
※2026年8月時点のMicrosoft・Googleの公式ヘルプと、Excel 2019(Windows)での動作確認に基づきます。画面はパソコン版で、機種・バージョンやブックの設定によって表記・日付の起点が異なる場合があります。後半はExcelの画面で説明します。

日付の表示に戻す3つの道
- 数字になっているセルを選ぶ
- 表示形式アプリの設定から「日付」を選び直す
- 関数元の表は触らず別のセルへ出す
- まだ数字のまま・##### が並ぶなら次の節(文字列・列幅)を確かめる
- 日付の表示に戻れば解決
- 数字になっているセルを選ぶ
- 右クリック →「セルの書式設定」
- 「表示形式」タブの分類で「日付」を選ぶ
- 数字になっているセル(範囲)を選ぶ
- 「表示形式」→「数字」→「日付」
- 空いているセルに TEXT 関数を入れる
- 結果は文字列になる
ExcelとGoogleスプレッドシートのやり方は、元の表そのものを日付に戻したいときの基本です(日付として書式を設定する / Google公式ヘルプ)。スプレッドシートで時刻入りの形にしたいときは、同じ「数字」の一覧にある「カスタム日時」から選べます。関数は、受け取った表を崩さずに別のセルへ日付の形で出したいときに使います。
=TEXT(A1,"yyyy/m/d")
A1のところは、数字になっているセルの位置に合わせて変えてください。A1に45000が入っていれば結果は「2023/3/15」になります(Excel 2019で実行確認済み)。ただし TEXT関数 の結果は文字列になるため、そのあとの日付計算には使いにくくなります。
日付として扱われない・#####になる時
- 並べ替えや計算がきかない・セルの中で左に寄る = 中身は文字列
- 表示形式をいったん「標準」に戻して、日付を入力し直す
- ##### が並ぶときは列の見出しの境目を右へドラッグして広げる
表示形式が「文字列」のセルは、日付を入力しても文字のまま保存されます(Excel 2019で確認)。入れ直す量が多いときは、空いているセルに =DATEVALUE(A1) と入れるとシリアル値に変換でき(DATEVALUE関数)、そこに日付の表示形式を付ければ日付として使えます。
列の境目はダブルクリックすると中身に合わせて自動調整されます。広げても「#####」が直らない場合は、日付や時刻の引き算の結果がマイナスになっている可能性があります(Microsoft公式: #####エラーの修正方法)。計算式が「新しい日付-古い日付」の順になっているか確かめてください。
受け取ったCSVそのものが開けない・末尾が切れている場合は、日付の表示形式とは別の原因です → 大きいCSVがExcelで開けない
それでも直らない時のチェックリスト
数字の正体が通し番号だと分かっていれば、日付が数字に化けても、表示形式か関数のどちらかでその場で戻せます。