取引先から受け取ったCSVをダブルクリックで開いたら、電話番号の先頭の0が消えている。
商品コードの「1-2」が「1月2日」になっている。13桁のJANコードが「4.91234E+12」になっている。
これは、Excelが「気を利かせた」結果です。
そして厄介なことに、開いた時点ではもう元の値が残っていません。
順に見ていきます。なお文字化けについては別記事で扱っているので、ここでは触れません。
■ なぜ壊れるのか
CSVは、ただのテキストです。「これは文字列」「これは数値」という情報を持っていません。
そのためExcelは、ファイルを開くときに中身を見て型を推測します。
「0362345678 は数字の並びだから数値だろう」
「1-2 は日付の書き方だろう」——この推測が、日本のデータでは頻繁に外れます。
ダブルクリックで開くと、この推測は確認なしで実行されます。
ここが事故の入口です。
■ 壊れ方1:先頭の0が消える
「0362345678」→「362345678」
「00123」→「123」
電話番号、郵便番号、社員番号、銀行の支店コード。
先頭に0が付く識別子はすべて対象です。
数値として読まれた時点で、先頭の0は意味を持たない桁として捨てられます。
数値の 0123 と 123 は同じ数だからです。
■ 壊れ方2:数字が日付になる
「1-2」→「1月2日」
「2/3」→「2月3日」
「2026-1」→「2026年1月」
ハイフンやスラッシュで区切られた数字は、日付と解釈されます。
枝番付きの商品コード、部屋番号、条項番号などが該当します。
さらに悪いことに、内部では日付のシリアル値(44928 のような整数)に置き換わっています。
表示形式を戻しても、元の「1-2」という文字列には戻りません。
■ 壊れ方3:長い数字が指数表記になる
12桁を超えるあたりから「1.23457E+11」のような表示に変わります。
JANコード、クレジットカード番号、マイナンバー、注文番号などです。
指数表記そのものは表示上の問題で、桁数を増やせば見た目は戻ります。
問題は16桁以上のときです。
Excelが数値として保持できる有効桁数は15桁です。
16桁目以降は0に置き換えられ、値そのものが失われます。
「1234567890123456」が「1234567890123450」になる、という壊れ方です。
これは表示形式では戻りません。
■ 壊れ方4:全角の数字が半角に変わる
「123」のように全角数字だけで書かれたセルは、数値と判定されて半角の 123 になります。
全角と半角を区別して管理しているデータ(旧システムからの移行データに多い)では、
この変換だけで突合が合わなくなります。
またExcelで開いた後に手で編集すると、オートコレクトが働いて
先頭の英字が大文字になったり、URLが自動でリンクになったりします。
「開いただけ」と「開いて触った」では、壊れ方が変わります。
■ 壊さずに開く手順
Excelを先に起動してから、読み込みます。
データタブ →「テキストまたはCSVから」→ ファイルを選択
→ 右下の「データ型検出」を 「データ型を検出しない」 に変更 → 読み込み
これで全列が文字列として読み込まれます。
一部の列だけを数値にしたい場合は、「データの変換」からPower Queryを開き、
列ごとに型を指定してください。
Excel 2016以前は、拡張子を .txt に変えてから開くとウィザードが起動し、
列ごとに「文字列」を指定できます。
Googleスプレッドシートを使う手もあります。
「ファイル > インポート」で、「テキストを数値、日付、数式に変換する」のチェックを外すと、
そのままの値で読み込まれます。
中身を確認したいだけなら、メモ帳やテキストエディタで開くのがいちばん安全です。
■ やってはいけない対処
1. 開いた後に、セルの書式を「文字列」に変更する
これで直るのは見た目だけです。
消えた先頭の0は戻りませんし、日付になったセルは「44928」のような数字に変わります。
壊れた状態が別の形に変わるだけで、元の値は復元されません。
2. 表示形式のユーザー定義で見た目を整える
「000-0000-0000」のような書式を当てて電話番号らしく見せる方法です。
画面上は正しく見えますが、セルの実体は数値のままです。
CSVに書き出した瞬間、また先頭の0が消えます。
3. そのまま上書き保存する
いちばん取り返しがつかない操作です。
壊れた状態で確定してしまうと、送り主に再送を依頼するしかなくなります。
開いてしまったら、保存せずに閉じて、正しい手順で開き直してください。
■ それでも解決しないとき
・すでに上書き保存してしまい、元のファイルが無い
・列が数十本あり、どの列を文字列にすべきか判断がつかない
・毎月同じCSVを受け取るので、毎回この作業をしたくない
このあたりまで来たら、手で開いて直すより、変換処理を用意した方が早いです。
私はCSVやExcelのデータ整形を承っています。
整形済みのファイルに加えて、同じ処理を再実行できるスクリプトをお付けしていますので、
翌月以降はご自身で回していただけます。
――
この記事の執筆には生成AIを活用しています。内容は実際の挙動を確認して書いています。