Excelを使っていて、「45292」のような見覚えのない数字が突然表示されると、「日付が壊れた?」と戸惑うことがあります。
ただし、その数字がExcelの日付を表すシリアル値なら、データが壊れたわけではありません。
シリアル値なら、まずセルの表示形式を「日付」に変更するだけでOKです。
一方で、「20260914」のような8桁の数字や、「2026/9/14」が文字列として保存されている場合は、同じ方法では直りません。
最初に次の3種類を見分けると、必要な操作がすぐに分かります。
| セルの中身 | 正体 | 主な対処 |
|---|---|---|
| 45292 | 日付のシリアル値の可能性 | 表示形式を日付に変更 |
| 45292.5 | 日付+時刻のシリアル値 | 日付+時刻の表示形式に変更 |
| 20260914 | YYYYMMDD形式の8桁数字 | DATE関数で年月日に分解 |
| 「2026/9/14」が文字列 | 文字列の日付 | DATEVALUE関数などで変換 |
| ##### | 列幅不足など | まず列幅を広げる |
この記事では、シリアル値を普通の日付へ戻す最短手順から、TEXT関数、DATEVALUE関数、8桁数字、時刻付きシリアル値、日付が4年ほどずれる場合まで順番に解説します。
まず確認|その数字は本当にExcelのシリアル値?

「数字を日付へ変換したい」ときに最も大切なのは、いきなり関数を使わず、元データの種類を確認することです。
Excelでは日付を内部的に連続した数字で管理しています。
一般的な1900日付システムでは、1900年1月1日をシリアル値1として扱います。
たとえば、
- 1 → 1900年1月1日
- 39448 → 2008年1月1日
- 45292 → 2024年1月1日
という関係になります。
つまり、セルに「45292」と表示されていても、日付データが別の数字へ書き換わったとは限りません。
日付の中身であるシリアル値が、そのまま表示されているだけというケースがあります。
最初に表示形式を変えてみる
数字が5桁程度で、元々日付が入っていたセルなら、最初に表示形式を変更してみましょう。
- 数字が入ったセルを選択する
- 「ホーム」タブを開く
- 「数値」の表示形式を確認する
- 「短い日付形式」などを選択する
または、セルを選択してCtrl+1を押し、「セルの書式設定」から「日付」を選べます。
正常な日付シリアル値なら、この操作だけで日付として表示されます。
ISNUMBER関数で数値かどうかを確認する方法
セルが数値なのか文字列なのか分かりにくい場合は、別のセルで次の式を使えます。
=ISNUMBER(A1)
TRUEならA1は数値、FALSEなら数値ではありません。
ただし、TRUEだから必ず日付シリアル値という意味ではありません。
たとえば「20260914」も数値として入力されていればTRUEになります。
そのため、ISNUMBERは「数値か文字列か」を切り分ける補助として使い、その数字の桁数や元データの意味も確認してください。
20260914はシリアル値ではない
特に間違えやすいのが、次のような数字です。
20260914
これは通常、「2026年9月14日」をYYYYMMDDの順に並べた8桁数字です。
Excelの日付シリアル値ではないため、セルの表示形式を「日付」に変更しても、期待する2026年9月14日にはなりません。
45292のようなシリアル値と、20260914のような8桁数字は別物として扱う必要があります。
シリアル値を日付へ戻すなら表示形式の変更だけでOK

元の値がExcelの日付シリアル値なら、基本的に関数を使う必要はありません。
セルの値を変換するのではなく、見せ方だけを「数字」から「日付」へ変えるのが最もシンプルです。
Ctrl+1で好きな日付形式に変更する
- シリアル値が入ったセルを選択する
- Ctrl+1を押す
- 「表示形式」タブを開く
- 「日付」を選択する
- 使いたい日付形式を選ぶ
- 「OK」を押す
たとえば同じ日付データでも、表示形式によって次のように見せられます。
- 2026/9/21
- 2026/09/21
- 2026年9月21日
- 9月21日
見た目は変わりますが、セル内部のシリアル値は同じです。
そのため、日付同士の引き算、並べ替え、フィルターなどにもそのまま利用できます。
ユーザー定義なら表示を細かく指定できる
「セルの書式設定」→「ユーザー定義」を使うと、自分で表示形式を指定できます。
| 表示形式 | 表示例 |
|---|---|
| yyyy/m/d | 2026/9/21 |
| yyyy/mm/dd | 2026/09/21 |
| yyyy”年”m”月”d”日” | 2026年9月21日 |
| m/d | 9/21 |
| yyyy/m/d h:mm | 2026/9/21 14:30 |
表示形式だけを変更する場合は、日付データそのものを文字列へ変えません。
あとで日付計算や並べ替えをする予定があるなら、この方法が基本です。
小数が付いたシリアル値は時刻も含んでいる
「45292.5」のように小数部分がある場合もあります。
Excelでは1日を1として扱うため、小数部分は1日の中の時刻を表します。
| 値 | 意味 |
|---|---|
| 0.25 | 6:00 |
| 0.5 | 12:00 |
| 0.75 | 18:00 |
| 45292.5 | 2024/1/1 12:00 |
日付しか表示されず時刻も確認したい場合は、表示形式を
yyyy/m/d h:mm
などへ変更してください。
TEXT関数ならシリアル値を好きな形式の「文字列」にできる

別のセルへ「2026/9/21」のような文字として出力したい場合は、TEXT関数を利用できます。
たとえばA1に日付のシリアル値が入っている場合は、
=TEXT(A1,”yyyy/m/d”)
と入力します。
ほかにも次のような指定ができます。
| 数式 | 表示例 |
|---|---|
| =TEXT(A1,”yyyy/m/d”) | 2026/9/21 |
| =TEXT(A1,”yyyy/mm/dd”) | 2026/09/21 |
| =TEXT(A1,”yyyy年m月d日”) | 2026年9月21日 |
| =TEXT(A1,”yyyy/m/d h:mm”) | 2026/9/21 14:30 |
TEXT関数の結果は日付ではなく文字列
ここは重要な違いです。
TEXT関数は数字の見た目を整えるだけではなく、結果を文字列として返します。
そのため、
- ほかの文章と日付をつなげたい
- CSV出力用の文字列を作りたい
- 決まった形式の日付文字列が必要
という用途には便利です。
一方で、
- 日付順に並べたい
- 2つの日付の日数差を計算したい
- 月別に集計したい
- 日付関数で利用したい
といった場合は、元の日付シリアル値を残して表示形式だけ変更したほうが扱いやすくなります。
| 目的 | おすすめ |
|---|---|
| 普通の日付として使いたい | 表示形式を変更 |
| 日付計算をしたい | 表示形式を変更 |
| 日付を文字列として出力したい | TEXT関数 |
| 文章と日付を結合したい | TEXT関数 |
文字列の日付・8桁数字は別の方法で日付へ変換する

表示形式を日付へ変更しても直らない場合は、元データがシリアル値ではない可能性があります。
よくあるのが「文字列の日付」と「YYYYMMDD形式の8桁数字」です。
文字列の「2026/9/21」はDATEVALUE関数で変換
見た目は日付でも、セルの中身が文字列として保存されていることがあります。
たとえばA1に文字列として「2026/9/21」が入っているなら、次の式を試せます。
=DATEVALUE(A1)
DATEVALUE関数は、Excelが日付として解釈できる文字列を日付のシリアル値へ変換します。
結果が「46286」のような数字になっても、失敗ではありません。
結果セルの表示形式を「日付」へ変更すると、通常の日付として表示できます。
DATEVALUEは「シリアル値→日付」ではなく「日付文字列→シリアル値」の関数だと覚えておくと混乱しにくくなります。
20260921のような8桁数字はDATE関数を使う
A1に「20260921」が入っている場合は、年・月・日に分けてDATE関数へ渡します。
=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))
この式では、
- LEFT(A1,4) → 2026
- MID(A1,5,2) → 09
- RIGHT(A1,2) → 21
を取り出し、DATE関数で1つの日付へ組み立てます。
| 元データ | おすすめの方法 |
|---|---|
| 45292 | 表示形式を日付へ変更 |
| 「2026/9/21」という文字列 | DATEVALUE |
| 20260921 | DATE+LEFT+MID+RIGHT |
DATEVALUEで#VALUE!になる場合
DATEVALUE関数は、Excelが日付として認識できない文字列ではエラーになります。
たとえば、
- 文字の間に余計な空白がある
- 年月日の並びが特殊
- 区切り文字が通常と異なる
- 存在しない日付が入っている
といった場合です。
また、日付文字列の解釈はパソコンの地域設定などの影響を受ける場合があります。
業務データで年月日が別々に取得できるなら、文字列の自動判定に頼らず、DATE関数で明示的に年・月・日を指定したほうが扱いやすいこともあります。
日付に変換できない・結果がおかしいときの確認ポイント

数式を増やす前に、症状ごとに原因を切り分けると解決しやすくなります。
| 症状 | まず確認すること |
|---|---|
| 45292のような数字になる | 表示形式が「標準」「数値」になっていないか |
| 20260921を日付にできない | シリアル値ではなく8桁数字ではないか |
| DATEVALUEで#VALUE! | 文字列・空白・日付形式を確認 |
| #####と表示される | 列幅を広げる |
| 日付が約4年ずれる | 1900・1904日付システムを確認 |
| 日付しか出ず時刻が消えたように見える | 時刻を含む表示形式へ変更 |
#####は日付変換の失敗とは限らない
日付を設定した直後に、セルが
#####
となることがあります。
この場合、まず列幅を確認してください。
表示する日付がセル幅に収まらないと、Excelでは#####と表示されることがあります。
列見出しの右端をダブルクリックするなどして幅を広げ、それでも直らなければほかの原因を確認します。
日付が約4年ずれるなら1900・1904日付システムを確認
古いExcelファイルや、異なる環境で作られたブックを扱うと、「同じ数字なのに日付が約4年ずれている」というケースがあります。
Excelには、
- 1900日付システム
- 1904日付システム
の2種類があります。
2つのシステムには1,462日の差があります。
通常の新しいExcelでは1900日付システムが使われますが、以前のMac版Excelなどで作成されたブックでは1904日付システムが関係している場合があります。
「すべての日付が同じように約4年ずれている」という場合は、個々のセルを計算で補正する前にブックの日付システムを確認してください。
CSVへ保存すると見た目がそのまま保持されるとは限らない
Excelのセルでは「2026/9/21」と表示されていても、日付の実体はシリアル値です。
また、セルの表示形式とデータそのものは別です。
ほかのシステムへ渡すデータを作る場合は、相手側が求めているのが、
- Excelの日付値
- 2026/9/21のような文字列
- 20260921のような8桁形式
のどれなのか確認してから変換しましょう。
単に画面上で日付に見えているだけでは、外部システムで同じ表示になるとは限りません。
Excelのシリアル値と日付変換でよくある疑問

45292を日付にするには関数が必要ですか?
45292がExcelの日付シリアル値であれば、通常は関数を使う必要はありません。
セルを選び、表示形式を日付へ変更すれば2024年1月1日として表示できます。
シリアル値をYYYYMMDDにできますか?
文字列として8桁にしたいならTEXT関数が使えます。
=TEXT(A1,”yyyymmdd”)
A1が2026年9月21日を表す日付なら、結果は
20260921
になります。
ただし結果は文字列なので、その後も日付計算をするなら元の日付セルを残してください。
20260921を日付表示にするだけではダメですか?
通常は期待する結果になりません。
20260921は一般的なExcelの日付シリアル値ではなく、年月日を並べただけの8桁数字だからです。
DATE、LEFT、MID、RIGHTなどを使って年月日を分解して日付を作ります。
DATEVALUEとTEXTの違いは何ですか?
変換する方向が反対です。
| 関数 | 主な役割 |
|---|---|
| TEXT | 数値・日付 → 書式を付けた文字列 |
| DATEVALUE | 日付の文字列 → 日付シリアル値 |
日付を計算できる状態へ戻したいならDATEVALUE、表示用の文字列を作りたいならTEXTという違いがあります。
シリアル値から曜日も表示できますか?
はい。
元データが正常な日付シリアル値なら、表示形式を
yyyy/m/d(aaa)
などに設定すると、日付と曜日を表示できます。
TEXT関数なら、
=TEXT(A1,”yyyy/m/d(aaa)”)
のように指定できます。
数字が日付なのか普通の数値なのか自動で判断できますか?
完全に自動で判断するのは難しい場合があります。
シリアル値も通常の数字も、Excel内部では数値だからです。
たとえば45292が「日付」を意味するデータなのか、「商品番号45292」を意味するのかは、数字だけでは判断できません。
元データの項目名や用途まで確認する必要があります。
まとめ|数字を日付にする前に「シリアル値・8桁・文字列」を見分けよう

Excelで数字を日付へ変換するときは、すべて同じ方法を使うのではなく、元データの種類から判断するのが近道です。
- 45292のようなシリアル値 → 表示形式を日付に変更
- シリアル値を文字列の日付にする → TEXT関数
- 文字列の日付を計算できる日付にする → DATEVALUE関数
- 20260921のような8桁数字 → DATE関数で年月日を組み立てる
- 小数付きシリアル値 → 日付+時刻の表示形式を使う
- ##### → まず列幅を確認
- 日付が約4年ずれる → 1900・1904日付システムを確認
特に重要なのは、「日付として表示すること」と「文字列へ変換すること」は同じではないという点です。
あとで並べ替え・フィルター・日付計算をするなら、できるだけ日付シリアル値のまま保持し、表示形式だけを変更します。
TEXT関数は、日付を文章へ組み込む場合や、別システムへ渡すために決まった文字列形式が必要な場合に使うと整理しやすくなります。
数字を見たらすぐ関数を使うのではなく、まず「これは本当にシリアル値なのか?」を確認する。それだけで、不要な変換や日付の崩れをかなり防ぎやすくなります。

