日付を入力したはずのセルに 45000 のような5桁の数字が出てしまい、入力し直しても同じ数字に戻る。Excelで日付の列を扱うときに、現場でいちばん多い戸惑いのひとつです。結論から言えば、これはファイルが壊れたわけではなく、Excelが日付を内部で数字として持っている仕組みがそのまま見えている状態です。表示形式を直すだけで済む型と、表示形式では直らない型があるので、まずそこを切り分けます。
結論:日付は1900年1月1日を「1」とする連番で保存されている
Microsoftのサポート文書は、日付を入力すると「1900年1月1日からの経過日数を表すシリアル値」に変換されると明記しています。1900年1月1日のシリアル値が 1 で、公式の例では2011年7月5日が 40729 です。つまり画面に出ている 45000 は異常値ではなく、同じ数え方でたどると2023年3月15日にあたる、ただの連番です。
そのため最短の直し方は、セルを選んで Ctrl+1(セルの書式設定)を開き、[分類]で「日付」を選ぶことです。これで日付に戻るなら、中身は正しい日付のままで、見せ方だけが「標準」や「数値」になっていたということになります。押しても数字のままなら、中身が日付ではなく文字列か、あるいはブック全体の日付の基準がずれています。次の表で自分の症状を振り分けてください。
症状の振り分け表:見えている状態から原因を当てる
同じ「日付が数字になる」でも、見えている状態によって打つ手がまったく違います。実務では、ここを飛ばして表示形式をいじり続けて時間を使ってしまうことが多いところです。
見えている状態 | 考えられる原因 | 最短の直し方 |
|---|---|---|
45000 のような5桁の整数で、セル内で右寄せ | 値は日付だが、表示形式が「標準」か「数値」 | Ctrl+1 →[分類]で「日付」を選ぶ |
45000.5 のように小数が付く | 日付と時刻がまとめて入っている(小数部が時刻) | Ctrl+1 →[ユーザー定義]で yyyy/m/d h:mm |
Ctrl+1で「日付」にしたのに数字のまま | セルの表示形式が「文字列」で、書式変更が効いていない | 分類を日付にしたうえで F2 → Enter で再確定 |
2026/4/1 の見た目なのに左寄せで、計算に使えない | 日付ではなく文字列として入っている | DATEVALUE関数、または[データ]>[区切り位置]で変換 |
入れたい数字やコードが勝手に日付になる(逆向き) | Excelの自動変換が働いている | 先にセルを文字列書式にする、または先頭に ' を付ける |
CSVを開くと日付が別の日付に変わる | 取り込み時の解釈(月と日の取り違えなど) | テキストファイルウィザードで列のデータ形式を「日付」に指定 |
ブック内の日付がすべて約4年ずれる | ブックが1904年日付システムで計算している | [1904 年日付システムを使用する]の設定を確認 |
原因1:値は日付のままで、表示形式が「標準」や「数値」になっている
いちばん多いのがこの型です。日付として正しく入っているので計算にも並べ替えにも使えますが、見せ方の指定だけが数値になっているため連番が露出します。セルの中で数字が右寄せになっているのが目印で、Ctrl+1 から[分類]>「日付」を選べばその場で戻ります。
この状態になるきっかけは、たいてい書式が別のセルから流れ込むことです。数値列の書式をコピーして貼り付けた、数値用に書式をそろえたテンプレートに日付を入力した、他のシートから値と書式をまとめて貼った、といった操作が引き金になります。TODAY関数やDATE関数の結果を、もともと数値書式のセルに入れたときも同じ見え方になります。
小数が付いているときは時刻が一緒に入っている
45000.5 のように小数が付く場合、整数部が日付、小数部が1日(24時間)に対する時刻の割合です。日付だけを見せたいなら表示形式を日付にすれば画面上は整数の日付になりますが、値としては時刻が残り続けます。期間の集計や突き合わせで1日ずれるのを避けたいときは、表示を変えるだけでなく INT 関数で時刻を落とした列を別に作るほうが確実です。
原因2:文字列として入っていて、表示形式を変えても直らない
表示形式を日付にしても数字や「2026/4/1」の見た目が変わらないときは、セルの中身が日付ではなく文字です。文字列は表示形式の指定を受け付けないので、ここで書式をいくら切り替えても何も起きません。見た目が整っているのに SUM や並べ替え、ピボットが期待どおりに動かないのも同じ原因です。
変換の方法は公式の関数で用意されています。DATEVALUE関数は「文字列として格納された日付を、Excelで日付として認識できるシリアル値に変換」する関数で、公式の例では =DATEVALUE("1/1/2008") が 39448 を返します。ただしMicrosoftも同じページで「日付のシリアル値を日付として表示するには、セルに日付の書式を適用する必要があります」と注意しているとおり、関数を入れた直後は数字で出ます。変換と表示形式は別の作業だと覚えておくと迷いません。
列ごとまとめて直すなら、[データ]>[区切り位置]を開いてそのまま[完了]まで進める方法が速いです。区切り位置はセルの中身を入力し直すのと同じ扱いになるため、文字列のままだった日付が日付として再確定されます。数値や日付が文字列で入っているケースの見分け方は、エクセルの数値が文字列で集計されない時の直し方も合わせて確認してください。
原因3:逆向きに「数字やコードが勝手に日付になる」
この症状を調べている方の半分くらいは、実は逆向きの悩みを抱えています。「1-5」や「3/4」のような入力が日付に変換されてしまい、数字のまま残したいという型です。Microsoftはこれを止める方法として、数値の前にスペースを入れる、先頭にアポストロフィ(')を付ける、入力する前にセルを文字列書式にしておく、の3つを挙げています。
ここには実務で引っかかる注意があります。公式ページは、MATCHやVLOOKUPなどの関数は計算のときにアポストロフィを見落とすと書いており、検索や突き合わせに使う列ではスペース方式のほうが扱いやすい場合があります。一方でスペースは実際にセルに残るので、こちらも別の集計で邪魔になります。どちらも副作用があるので、入力前に列ごと文字列書式にしておくのが結局いちばん後始末が少ない方法です。勝手な日付変換そのものの対処は、エクセルで日付に勝手に変換される時の対処にまとめています。
私たちはこういう「表の形を整え続ける手間」そのものを減らすお手伝いもしています。記事の途中で恐縮ですが、よろしければ合わせてご覧いただけたら嬉しいです。
CSV・他システムからの取り込みで起きる型
販売管理や会計のシステムから出したCSVをExcelで開いたとき、日付の列が数字になったり、別の日付に化けたりすることがあります。CSVには「この列は日付」という情報が入っていないので、開いた側が中身を見て推測するしかありません。推測が外れると、日付が文字列のまま残る、月と日が入れ替わる、5桁の数字がそのまま数値として読まれる、のいずれかが起きます。
これを人の判断で止めるのがテキストファイルウィザードです。公式の手順では、ウィザードの3番目の画面にある[列のデータ形式]で「日付」を選び、続いて日付の形式を指定します。ダブルクリックで開いてから直すのではなく、取り込みの時点で列の型を指定するのが唯一の確実な方法です。毎月同じCSVを扱うなら、Power Queryで取り込み手順を保存しておくと翌月以降は同じ型が再現されます。
同じCSVで文字が崩れる症状が同時に出ているときは、エクセルCSV文字化けの直し方も先に片付けておくと切り分けが楽になります。
ブック全体が約4年ずれるときは1904年日付システム
1つのセルではなくブック内の日付が揃ってずれている場合は、日付の起点そのものが違います。Excelには1900年日付システムと1904年日付システムの2つがあり、後者は1904年1月1日を起点に数えます。公式の記載では、同じ2011年7月5日が1900年システムで 40729、1904年システムで 39267 になり、両者の差は常に1,462日です。
設定はWindowsなら[ファイル]>[オプション]>[詳細設定]にある「1904 年日付システムを使用する」で、Macなら[Excel]メニューの環境設定から計算方式の項目で確認できます。1904年システムは以前のMac版Excelの既定だったため、古いMacで作られたブックを受け取ったときに混ざりがちです。途中で切り替えると既存の日付が一斉にずれるので、変更前に必ずブックを複製してください。
1900年2月以前の日付が1日ずれる理由
もう1つ、古い日付を扱うときだけ表に出る癖があります。Excelは他のプログラムとの互換性のために1900年をうるう年として扱っていて、Microsoftの文書も「他のプログラムと互換性を保つため、Microsoft Excelは1900年をうるう年として扱います」と明記しています。グレゴリオ暦では100で割り切れる年は400でも割り切れないとうるう年にならないため、1900年は本来うるう年ではありません。
結果として、Excelの内部には実在しない1900年2月29日が1日ぶん入っています。現在の業務日付では影響が出ませんが、1900年3月より前の日付を扱う台帳では日数計算が1日ずれます。公式には2100年など他の年は正しく処理されるとあるので、気にするのは1900年の前後だけで十分です。
断定できないこと:バージョン差・ロケール差・Mac版の違い
ここまでの仕組みは公式文書で確認できますが、画面の文言やメニューの位置はバージョンと環境で変わります。設定項目名は[詳細設定]の中で上下することがあり、Mac版は環境設定の階層そのものが違います。Web版のExcelでは一部の設定にそもそも触れません。
日付の解釈はさらにOS側のロケールにも左右されます。「3/4」が3月4日なのか4月3日なのかは地域設定で変わり、同じファイルを別のPCで開くと結果が変わることがあります。そのため、自分の環境で直った手順が相手の環境でも同じに効くとは限りません。社外とやり取りするファイルでは、日付列を yyyy/mm/dd のように桁を固定した形式にそろえておくのが、こちらで確実に打てる唯一の手だと感じています。
再発防止:表示形式と入力の受け口を固定する
同じ事故を繰り返さないために効くのは、入力する前に受け口を決めておくことです。日付列はあらかじめ日付書式にしておき、コードや番号の列は文字列書式にしておきます。そのうえで入力規則で日付以外を弾くようにすれば、誰が触っても連番が露出しません。
テンプレートを配る運用なら、空の状態で書式と入力規則まで入れたファイルを配布元で1つに固定し、各自がコピーして使う形にします。実務で多いのは、誰かが列を挿入したり他のシートから貼り付けたりして書式が崩れ、そこから崩れた列が複製されていくパターンです。数式そのものが文字のまま表示される症状も同じ「書式が文字列になっている」系統なので、数式がそのまま文字列で表示される時の直し方も合わせて押さえておくと切り分けが早くなります。
入力と集計を同じファイルで回していると、こうした書式の崩れは何度でも起きます。入力はフォームや画面側に任せ、Excelは出力と確認だけに使う形に変えると、書式の事故そのものが起きなくなります。現場で多いのは、崩れた列が複製されて誰も元の正しい形を覚えていない状態なので、受け口を1つに決めるところから始めるのが現実的です。
よくある質問
45000 と出ているセルは、何月何日のことですか?
Excelの1900年日付システムでは、シリアル値は1900年1月1日からの経過日数を表します。公式の例では2011年7月5日が40729なので、同じ数え方で45000は2023年3月15日にあたります。セルを選んでCtrl+1から分類を日付にすれば、画面上も日付表示に戻ります。
表示形式を日付にしたのに数字のままです。
セルの中身が日付ではなく文字列になっている可能性が高いです。文字列は表示形式の指定を受け付けないため、書式を切り替えても見た目が変わりません。DATEVALUE関数で変換するか、データタブの区切り位置を開いてそのまま完了まで進め、列ごと再確定してください。変換した直後は数字で出るので、そのあとで日付の書式を当てます。
日付がブック全体で約4年ずれています。
ブックが1904年日付システムで計算している可能性があります。1900年システムと1904年システムは起点が違い、同じ日付のシリアル値は常に1,462日ずれます。Windowsならファイルのオプションの詳細設定にある1904年日付システムを使用するの項目で確認できます。切り替えると既存の日付が一斉に動くので、変更前にブックを複製してください。
逆に、数字やコードが勝手に日付になるのを止めたいです。
Microsoftは数値の前にスペースを入れる、先頭にアポストロフィを付ける、入力前にセルを文字列書式にしておく、の3つを挙げています。ただしMATCHやVLOOKUPはアポストロフィを見落とし、スペースはセルに残るためどちらも副作用があります。入力する前に列ごと文字列書式にしておくのが、後始末のいちばん少ない方法です。
CSVを開くと日付が別の日付に変わります。
CSVには列の型が入っていないので、開いた側が中身から推測します。推測が外れると文字列のまま残る、月と日が入れ替わる、数値として読まれるといった結果になります。ダブルクリックで開いてから直すのではなく、テキストファイルウィザードの3番目の画面で列のデータ形式を日付に指定して取り込んでください。