はじめに:この長い数字、日付だって知ってました?
データベースやシステムからデータをダウンロードしたとき、日付の欄にこんな数字が入っていたことはありませんか?
20251130135641
私たち人間が見れば、「あ、2025年11月30日の13時56分41秒だな」となんとなく分かります。
しかし、Excelにとっては、これはただの「20兆2511億…」という、とてつもなく巨大な数値でしかありません。
このままでは日付として計算することも、グラフの日付軸にすることもできません。
今回のテーマは、「14桁の数値データを、Excelが理解できる日付・時刻(シリアル値)に変換する」です!
王道の文字列操作から、数学的な計算、そして力技の検索まで。5つのアプローチでこの数字を「翻訳」していきます。
【今回の前提条件】
扱う日付はすべて「今日より過去(または現在)」のものとします。
西暦5000年のような遠い未来の日付は考慮しません。
準備:シリアル値とWeb版の罠
本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!
まずは準備です。A1セルに、今回のボスキャラである数値「20251130135641」を入力してください。

「シリアル値」ってなに?
Excelは日付や時刻を「シリアル値」という数値で管理しています。
これは、Excel初心者の方が最初につまずくポイントの1つです。
・日付(整数部): 1900年1月1日を「1」として、そこから何日経過したかを表します。
・時刻(小数部): 1日(24時間)を「1」として、0から1の間の小数で表します。例えば、お昼の12時は1日の半分なので「0.5」です。
つまり、「日付と時刻」を作るということは、「日付の整数と、時刻の小数を足し算する」ことと同じなのです!

Web版Excelの表示形式の罠
今回紹介する数式を入力すると、結果が「45991.58…」のような数値(シリアル値)で表示されることがあります。
これを「2025/11/30 13:56:41」のように見やすくするには、セルの表示形式を変更する必要があります。
しかし、無料のWeb版Excelでは、ユーザー定義の表示形式(yyyy/m/d hh:mm:ssなど)を自由に作成する機能が制限されています。
そのため、数式の結果を確認する際は、隣のセルなどに以下のTEXT関数を入力して、強制的に見やすく表示させて確認しましょう。
=TEXT(数式を入力したセル,"yyyy/m/d hh:mm:ss")
(※ローカル版Excelで作成したファイルの表示形式は、Web版でも引き継がれますよ!)

5つのアプローチで「翻訳」せよ!
1. 王道!DATE関数とTIME関数で組み立てる
考えかた
最も基本的で、実務でも推奨される教科書的な方法です。
14桁の数字を「年」「月」「日」「時」「分」「秒」のパーツに切り分け、
それぞれをDATE関数とTIME関数に入れて合体させます。
数式と解説
=DATE(MID(A1,1,4),MID(A1,5,2),MID(A1,7,2))+TIME(MID(A1,9,2),MID(A1,11,2),MID(A1,13,2))
1. MID(A1, 開始位置, 文字数): この関数で数字を切り出します。
MID(A1,1,4)→ “2025” (年)MID(A1,5,2)→ “11” (月)- …というように、秒まで切り出します。

2. DATE(年, 月, 日): 切り出した年・月・日を使って、日付のシリアル値(整数)を作ります。
3. TIME(時, 分, 秒): 切り出した時・分・秒を使って、時刻のシリアル値(小数)を作ります。
4. DATE... + : 最後に日付と時刻を足し算すれば完成です!TIME...

2. 数値の桁数に注目(数学的アプローチ)
考えかた
文字列操作(MID関数)を使わずに、数学的な計算(割り算と余り)だけでパーツを取り出す方法です。
データが「数値」であることを最大限に利用します。
数式と解説
=DATE(INT(A1/10^10),MOD(INT(A1/10^8),100),MOD(INT(A1/10^6),100))+TIME(MOD(INT(A1/10^4),100),MOD(INT(A1/100),100),MOD(A1,100))
一見複雑そうですが、桁をずらしているだけです。
・年の取得: INT(A1/10^10)
14桁の数字を10の10乗(100億)で割ると、「2025.1130…」となります。これをINTで整数にすれば「2025」が取り出せます。
・月の取得: MOD(INT(A1/10^8),100)
10の8乗(1億)で割ると「202511.30…」、整数にすると「202511」。
これをMOD(..., 100)で100で割った余りを求めると、下2桁の「11」が取り出せます。
これを秒まで繰り返します。

文字列が含まれていたらエラーになるため、純粋な数値データの時に使える、計算機的な解法です。

3. Excelが読める形に変換(TEXTJOIN)
考えかた
Excelは賢いので、「2025/11/30」や「13:56:41」といった特定の形の文字列であれば、計算式の中で自動的に日付や時刻として認識してくれます。
そこで、パーツを切り出して「/」や「:」でつなぎ合わせます。
数式と解説
=TEXTJOIN("/",,MID(A1,{1,5,7},{4,2,2}))+TEXTJOIN(":",,MID(A1,{9,11,13},2))
1. MID(A1,{1,5,7},{4,2,2}): ここで配列定数を使っています!
開始位置 {1,5,7} と文字数 {4,2,2} を指定することで、{"2025", "11", "30"} という配列を一気に取得します。

2. TEXTJOIN("/",, ...): 取得した配列を「/」で結合し、"2025/11/30" という文字列を作ります。

3. 時刻も同様に TEXTJOIN(":",, ...) で "13:56:41" を作ります。
4. "2025/11/30" + "13:56:41": 文字列同士ですが、足し算(四則演算)をすることで、Excelが「あ、これは日付計算だな」と気を利かせてシリアル値に変換してくれます。

4. 日付も時刻もまとめて変換!(SUBSTITUTE)
考えかた
TEXT関数を使って、一気に形を整えたいところですが、ここには大きな落とし穴があります。
【失敗例】 =TEXT(A1,"0000-00-00 00:00:00")
これを実行すると、#VALUE! エラーになります。なぜでしょう?

実はTEXT関数の表示形式の中でコロン:を使うと、Excelは「これは時間の形式だ!」と解釈しようとします。
しかし、元の数値があまりにも巨大(20兆…)なため、時間の許容範囲を超えてしまい、エラーを吐いてしまうのです。
コロンと同様に、日付にスラッシュ/を使うとエラーになります。
正解の数式と解説
=SUBSTITUTE(TEXT(A1,"0000-00-00 00x00x00"),"x",":")*1
1. TEXT(A1,"0000-00-00 00x00x00"): コロン:がダメなら、別の文字で代用すればいいのです。ここでは仮に「x」を使いました。
結果は "2025-11-30 13x56x41" という文字列になります。

日付はハイフン–を使用してもExcelは認識できます。
2. SUBSTITUTE(..., "x", ":"): 邪魔な「x」を本来の「:」に置換します。
これで "2025-11-30 13:56:41" という、Excelが理解できる形式の文字列が完成しました。
3. ... * 1: 最後に1を掛けることで、文字列を数値(シリアル値)に変換します。

5. 一覧から同じものを探す(MATCH + SEQUENCE)
考えかた
最後は、「正解のリストを作って、そこから探す」という力技です。
「日付のリスト」と「時刻のリスト」を別々に生成し、MATCH関数で位置を特定します。
数式と解説
=MATCH(LEFT (A1,8),TEXT(SEQUENCE(TODAY()),"yyyymmdd"),0)+(MATCH(RIGHT(A1,6),TEXT(SEQUENCE(86400,,0,1/86400),"hhmmss"),0)-1)/86400
この数式は「日付パート」と「時刻パート」に分かれています。
日付パート:
1. SEQUENCE(TODAY()): 1(1900/1/1)から今日までのシリアル値の連番を作ります。
2. TEXT(..., "yyyymmdd"): それらを”20251130″のような8桁の文字列に変換し、検索リストを作ります。

3. MATCH(LEFT(A1,8), ..., 0): 元データの左8桁(日付部分)が、リストの何番目にあるかを探します。
見つかった位置(例えば45991番目)が、そのまま日付のシリアル値になります。

時刻パート:
1. SEQUENCE(86400,,0,1/86400): 1日は86400秒です。0から始まり、1秒刻み(1/86400)で増える、1日分の時刻シリアル値リストを作ります。
2. TEXT(..., "hhmmss"): それを”135641″のような6桁の文字列に変換します。

3. MATCH(...): 元データの右6桁(時刻部分)がリストの何番目かを探します。
4. (... -1)/86400: 見つかった位置を秒数に戻し、シリアル値(小数)に変換します。

これらを足し合わせます。

まとめ:シリアル値を制する者はExcelを制す!
ただの数字の羅列に見えるデータも、Excelの仕組み(シリアル値)を理解していれば、様々な方法で意味のある「日付と時刻」に蘇らせることができます。
実務ではアプローチ1のDATE+TIME関数や、アプローチ3のTEXTJOINが分かりやすくておすすめです。
しかし、アプローチ4のように「エラーの原因」を知り、それを回避するテクニックを知っておくことは、トラブルシューティングの大きな力になります。
ぜひ、手元のデータで試してみてくださいね!

