エクセルの日付は、見た目こそ「2026/8/13」ですが、中身は連番の数値(シリアル値)です。この仕組みを知っておくと、5桁の数字が出る・計算できない・並べ替えがおかしいといったつまずきの原因がひと目で分かります。日付として認識されているかは、セルの右寄せ・左寄せで判別できます。
この記事でわかること
- 日付の正体であるシリアル値の仕組み(時刻が小数になる理由も)
- 入力のしかたとショートカット、連続した日付を一気に入れる方法
- 表示形式で見た目だけを変える書式コード(和暦も含む)
- 日付に見えるのに計算できない文字列日付を直す4つの手順
- 5桁の数字になる・
####になる・並べ替えが効かないときの直し方
日付の正体はシリアル値
エクセルは日付を、1900年1月1日を「1」とした連番で管理しています。この数値をシリアル値と呼びます。
| 日付 | シリアル値 |
|---|---|
| 1900年1月1日 | 1 |
| 2000年1月1日 | 36,526 |
| 2026年8月13日 | 46,247 |
日付が数値である以上、足し算も引き算もできます。=A2+7 で1週間後、=B2-A2 で2つの日付の間の日数が出るのは、内部で数値を計算しているからです。
時刻は小数で表される
1日が「1」なので、半日は 0.5、6時間は 0.25 になります。「2026/8/13 12:00」は 46247.5 です。
日付と時刻が同じセルに入っていると、=A2=DATE(2026,8,13) のような比較が一致しません。時刻の小数部分が残っているためです。日付だけを取り出すには =INT(A2) を使います。
⚠️ 1900年前半だけ1日ずれる
エクセルは互換性のため、存在しないはずの1900年2月29日をカレンダー上に持っています。そのため1900年1月〜2月の日付は、他のシステムと1日ずれることがあります。実務で使う年代には影響しません。

日付の入力
区切り文字は / か -
2026/8/13 または 2026-8-13 と入力すると、日付として認識されます。年を省略して 8/13 と入力すると、今年の日付になります。
⚠️ ピリオド区切りの 2026.8.13 は日付になりません。ただの文字列として左に寄ります。
ショートカット
| キー | 入るもの |
|---|---|
| Ctrl + ; | 今日の日付(入力した時点で固定される) |
| Ctrl + : | 現在の時刻(同じく固定) |
ファイルを開くたびに更新したい場合は、ショートカットではなく =TODAY() を使います。TODAY関数は再計算のたびに今日の日付へ変わるため、記録として残したい日付には向きません。
連続した日付を一気に入れる
先頭のセルに日付を入れ、セル右下の四角(フィルハンドル)を下へドラッグすると、1日ずつ増えていきます。
月単位や平日だけにしたいときは、右ボタンでドラッグして離します。メニューが出るので選びます。
- 先頭セルに開始日を入力する
- フィルハンドルを右ボタンでドラッグして離す
- 「連続データ(週日単位)」「(月単位)」「(年単位)」から選ぶ
「週日単位」は土日を飛ばした連番です。祝日は考慮されません。
表示形式で見た目を変える
表示形式は見え方だけを変える設定で、セルに入っている値(シリアル値)は変わりません。入口は次のとおりです。
セルを選択 → Ctrl + 1 → 表示形式 タブ → 日付 または ユーザー定義
よく使う書式コード
| 書式コード | 表示例(値は 46247) |
|---|---|
yyyy/m/d | 2026/8/13 |
yyyy/mm/dd | 2026/08/13 |
yyyy"年"m"月"d"日" | 2026年8月13日 |
ggge"年"m"月"d"日" | 令和8年8月13日 |
m"月"d"日" | 8月13日 |
漢字や記号をそのまま出したい部分は、ダブルクォーテーションで囲みます。囲まずに書くと、書式コードとして解釈されて意図しない表示になります。
和暦は ggge で「令和8」となります。e は和暦の年、ggg は元号の正式表記です。
値そのものを文字列にしたいとき
表示形式はあくまで見た目です。「2026年8月13日」という文字として別のセルに取り出したいなら、TEXT関数を使います。
=TEXT(A2, "yyyy年m月d日")
こちらは結果が文字列になるため、日付としての計算はできなくなります。並べ替えや期間の計算に使う列は、表示形式のまま置いておくのが基本です。

日付に見えるのに計算できないとき
外部システムから貼り付けたデータでよく起こります。まず本物の日付かどうかを確かめるところから始めます。
見分け方は3つ
- 寄り方を見る:何も書式設定していないセルなら、日付(数値)は右寄せ、文字列は左寄せ
- ISNUMBER で確かめる:
=ISNUMBER(A2)がTRUEなら日付、FALSEなら文字列 - 表示形式を「標準」にしてみる:5桁の数字に変われば日付、見た目が変わらなければ文字列
形ごとの直し方
| 元の形 | 直し方 |
|---|---|
2026.8.13(ピリオド区切り) | Ctrl+H で . を / に置換する |
20260813(8桁の数値) | 区切り位置、または =DATE(LEFT(A2,4), MID(A2,5,2), RIGHT(A2,2)) |
2026/8/13(全角) | =ASC(A2) で半角に変換してから日付にする |
| 前後に空白がある | =TRIM(A2) で除去する |
| セルの表示形式が「文字列」 | 表示形式を「標準」に戻してから入力し直す |
区切り位置でまとめて変換する
列ごと一気に直せる方法です。数式を足さずに済むので、取り込みデータの下処理に向いています。
- 対象の列を選択する
- 「データ」タブ →「区切り位置」→「次へ」→「次へ」
- 「列のデータ形式」で「日付」を選び、右の並びを
YMDにする - 「完了」を押す
YMD は「年・月・日の順」という意味です。元データが 13/08/2026 のように日から始まるなら DMY を選びます。
DATEVALUE関数を使う
1件ずつ数式で変換するならDATEVALUE関数です。
=DATEVALUE(A2)
⚠️ 結果はシリアル値の数字で返ります。表示形式を日付に変えて初めて日付らしく見えます。「変換したのに5桁の数字が出た」というときは、失敗ではなく書式の設定漏れです。

うまくいかないときの原因と直し方
| 症状 | 主な原因 | 直し方 |
|---|---|---|
| 5桁の数字が表示される | 表示形式が「標準」のまま | 表示形式を「短い日付形式」にする |
#### と表示される | 列幅が足りない | 列の境界をダブルクリックして幅を広げる |
| 入力したのに日付にならない | セルの表示形式が「文字列」 | 「標準」に戻し、セルを削除して入力し直す |
| 並べ替えの順序がおかしい | 中身が文字列のまま | 上章の手順で日付に変換する |
| 引き算の結果が日付で出る | 結果セルに日付書式が残っている | 結果セルの表示形式を「標準」にする |
| 貼り付けたら日付が数字になった | 値だけを貼り付けた | 「書式設定」も含めて貼り付けるか、後から書式を設定する |
| すべての日付が約4年ずれる | ブックが「1904年から計算する」設定 | ファイル → オプション → 詳細設定 で確認する |
| 空欄なのに1900/1/0 と出る | 空白セルを日付書式で参照している | =IF(A2="", "", A2) で空欄を素通しする |
1904年オプションに注意
古いMacで作られたブックには、1904年を起点にする設定が残っていることがあります。この設定のブックと通常のブックの間で日付をコピーすると、1,462日(およそ4年)ずれます。
設定はブック単位です。日付だけが揃って大きくずれているときは、ここを疑ってください。

日付まわりの関数の使い分け
| 関数 | できること | 使う場面 |
|---|---|---|
| TODAY | 今日の日付を返す | 開くたびに更新したい |
| NOW | 現在の日時を返す | 時刻まで必要 |
| DATE | 年・月・日から日付を作る | バラバラの列を1つの日付にまとめる |
| DATEVALUE | 文字列の日付をシリアル値に変える | 取り込みデータの変換 |
| YEAR/MONTH/DAY | 日付から年・月・日を取り出す | 月別集計のキーを作る |
| TEXT | 日付を指定した形の文字列にする | 表記を固定した文字として出したい |
TODAY関数とNOW関数は、開き直すたびに値が変わる関数です。「登録日」のように後から変わってはいけない値には使わず、Ctrl+; で固定値として入力してください。
よくある質問
Q1:日付を入力すると勝手に「2026/8/13」の形に変わります。元の書き方のままにできますか?
表示形式を変えれば見た目は近づけられます。8-13 と入力しても内部では同じシリアル値なので、表示形式で m"月"d"日" などを指定してください。入力した文字をそのまま残す(表示形式を「文字列」にする)と、その列は日付として計算できなくなります。
Q2:日付から曜日を出すことはできますか?
できます。表示形式のユーザー定義に aaa を足すと「木」、aaaa で「木曜日」と表示されます。値は日付のままなので計算にも使えます。関数で文字として取り出す方法もあります。
Q3:セルに 2026/8/13 と入っているのに、フィルターの日付グループが出ません。
そのセルが文字列だからです。フィルターの「年 → 月 → 日」の階層表示は、本物の日付にだけ現れます。左寄せになっていないかを確認し、区切り位置などで変換してください。
Q4:31日を超える日付を入力するとどうなりますか?
2026/1/32 のような存在しない日付は、日付として認識されず文字列になります。一方で数式のDATE関数は繰り上げを行い、=DATE(2026,1,32) は 2026年2月1日を返します。月に 13 を指定した場合も翌年1月として計算されます。
Q5:日付を数値に戻したい(シリアル値を見たい)のですが。
セルを選んで表示形式を「標準」にすれば、シリアル値が表示されます。別のセルに取り出すなら =A2*1 や =INT(A2) でも数値として得られます。時刻を含むセルは小数が付くため、日付だけが必要なら INT で整数化してください。
まとめ
- 日付の中身は1900/1/1 を1とした連番。時刻は小数(0.5=12:00)
- 入力は
/か-。ピリオド区切りは文字列になる - 表示形式は見た目だけを変える。値を文字にするならTEXT関数
- 計算できない日付は左寄せ・ISNUMBERで見分け、区切り位置で一括変換
- 5桁の数字は失敗ではなく書式の設定漏れ。
####は列幅不足
※メニューの名称や操作手順はExcelのバージョンにより異なる場合があります。本記事はデスクトップ版Excel(Windows)での操作を前提に整理しています。

