CSVをExcelで開くと0が消える・桁が変わる|上書き保存すると元に戻せない理由
CSVファイルをExcelで開いたら、電話番号や郵便番号の先頭の0が消えていた。16桁の番号の末尾が「0」になっていた。「1-2」と書いたはずの値が「1月2日」になっていた。こうしたトラブルの大半は、Excelがセルの中身を「数値」や「日付」と推測して勝手に変換することで起きます。
結論から言うと、開いた時点ではファイルそのものはまだ壊れていません。壊れるのは、そのまま上書き保存した時です。 さらに、桁が丸められた数字や日付に変換された値は、セルの書式を後から「文字列」に変えても元に戻りません。この記事では、壊れる仕組み、壊さずに開く手順、すでに上書きしてしまった時の考え方を整理します。
結論:何が起きていて、どうすれば防げるか
CSVはただのテキストファイルです。Excelのような「このセルは文字列」「このセルは数値」という型の情報を持ちません。そのためExcelは、ファイルを開くときに各セルの中身を見て、数字に見えれば数値、日付に見えれば日付として読み込みます。
| 症状 | 実際に起きていること | 元に戻せるか |
|---|---|---|
0312345678 が 312345678 になる | 数値として読み込み、先頭の0を落とした | 桁数が決まっていれば補える |
1234567890123456 が 1.23457E+15 と表示される | 数値として読み込み、指数表記で表示している | 保存前なら表示だけの問題 |
16桁以上の数字の末尾が 0 になる | 15桁を超える部分が内部的に切り捨てられた | 元データから再取得するしかない |
1-2 が 1月2日 になる | 日付として解釈され、内部では日付の数値に置き換わった | 元の文字列は復元できない |
防ぐ方法は1つに集約できます。ダブルクリックで開かず、「データ」タブの取り込み機能で、列の形式を「文字列」に指定して読み込むことです。手順は後述します。
先頭の0が消える(0落ち)の仕組み
数値としての 0312345678 と 312345678 は、Excelにとって同じ値です。数値に先頭の0という概念はないので、読み込んだ時点で0は捨てられます。
電話番号、郵便番号、会員番号、商品コード、JANコードのように、「数字の見た目をしているが、計算に使わない識別子」で頻繁に起きます。
セルの書式を「文字列」にしても直らない理由
よくある誤解が、「0が消えたセルを選んで、書式を『文字列』に変えれば戻る」というものです。これは戻りません。
書式を変えても、すでに数値として読み込まれて0が捨てられた値は、そのまま文字列として扱われるだけで、捨てられた0は戻らないからです。書式を「文字列」にするのは、入力や読み込みの前に行うべき作業です。
すでに消えた0を補う方法
桁数が決まっているデータ(郵便番号は7桁、携帯電話番号は11桁など)なら、別の列に関数で0を補うことはできます。
=TEXT(A2,"0000000")
これは A2 の値を7桁に揃え、足りない上位桁を0で埋める式です。郵便番号なら 0600000 のように復元できます。ただし、桁数が一定でないデータ(ハイフンあり・なしが混在、桁数がバラバラな会員番号など)には使えません。 その場合は元のCSVを探し直すほうが確実です。
16桁以上の数字の末尾が0になる(桁落ち)
Excelが数値を正確に扱えるのは有効桁数15桁までです。16桁以上の数字は、16桁目以降が0に置き換わります。
クレジットカード番号(16桁)、一部の荷物追跡番号、長い注文ID、マイナンバーのような12桁は問題ありませんが、16桁を超える識別子を扱う業務では、この問題が必ず出ます。
表示が「1.23457E+15」になるだけなら、まだ壊れていない
指数表記(E+15)は、列幅が足りない時や数値の表示形式が「標準」の時の見た目の問題です。この段階で保存せずに閉じれば、元のCSVは無傷です。
問題は、表示を直そうとして書式を「数値」や「標準」に変えたり、そのまま上書き保存した時です。この操作で、15桁を超える部分が実際に0に置き換わって保存されます。一度0になった桁は、書式を「文字列」に変えても二度と戻りません。
16桁以上の数字が末尾0に丸められたら、そのファイルから元の数字を取り出す方法はありません。ダウンロード元のシステムから、CSVをもう一度取得し直す必要があります。
「1-2」や「3/4」が日付になる
ハイフンやスラッシュで区切られた数字は、Excelが日付と推測しやすい代表例です。
| 元の値 | Excelが読み込んだ結果 |
|---|---|
1-2 | 1月2日(その年の日付) |
3/4 | 3月4日 |
1-2-3 | 日付として解釈されうる |
日付に変換されると、内部的には「その日付を表すシリアル値」に置き換わります。元の文字列が 1-2 だったという情報は残りません。 年が補われるため、後から見ても元がハイフンだったのか、スラッシュだったのかすら分からなくなります。
部品番号、型番、枝番付きの住所、スペース区切りの略号などで起きやすいトラブルです。研究分野では、遺伝子名がExcelによって日付に変換される問題が知られており、命名ルール側を変更した例もあるとされています。「日付に見えるだけの文字列」は、それだけ頻繁に被害を出しています。
他所ではあまり書かれていない落とし穴:壊れるのは「開いた時」ではなく「保存した時」
多くの解説は「先頭の0が消える→こう直す」という流れで書かれています。しかし実務で一番大事なのは、いつ壊れたのかを正しく把握することです。
開いただけでは、ファイルは変わらない
CSVをダブルクリックしてExcelで開いても、元のCSVファイルの中身は書き換わりません。画面上の表示が変わっているだけです。この時点でExcelを閉じ、「保存しますか?」というダイアログで「保存しない」を選べば、元のCSVは無傷です。
壊れるのは、次の操作
- Ctrl + S で上書き保存した
- 閉じる時の「変更を保存しますか?」に反射的に「保存」を押した
- 「CSV形式の機能のみが保持されます」という警告に「はい」を押して保存した
特に危ないのが3つ目です。この警告は毎回出る定型の確認なので、慣れた人ほど内容を読まずに「はい」を押してしまいます。この「はい」が、0落ち・桁落ち・日付化をファイルに確定させるボタンです。
他人に渡した後に壊れるケース
自分は保存していなくても、共有フォルダ上のCSVを別の誰かがExcelで開いて上書き保存すれば、同じ破壊が起きます。データの受け渡しにCSVを使う現場では、「誰かが開いて保存した」ことが原因の事故が起こりがちです。可能なら、受け渡し用のCSVは読み取り専用にするか、元ファイルを別に保管しておくのが安全です。
見分け方:メモ帳で開く
CSVが今どうなっているのかを確認する一番確実な方法は、Excelを使わず、メモ帳などのテキストエディタで開くことです。メモ帳に表示される内容が、そのファイルに実際に入っている中身です。
会員番号,電話番号,備考
0001,0312345678,1-2
0002,09012345678,3/4
メモ帳で 0001 や 0312345678 が残っていれば、ファイルは無傷です。0が消えていれば、すでにどこかで上書き保存されています。
壊さずにCSVを開く手順
ここからが対処です。ダブルクリックで開くのをやめ、取り込み機能を使います。
手順(Microsoft 365やExcel 2019以降の例)
- Excelを開き、新しいブックを作る
- 「データ」タブ → 「テキストまたはCSVから」をクリック
- 対象のCSVを選ぶ
- プレビュー画面の「データ型検出」を「検出しない」にする
- 「読み込み」を押す
「データ型検出」を「検出しない」にすると、すべての列が文字列として読み込まれ、0落ち・桁落ち・日付化が起きません。
メニュー名はExcelのバージョンによって異なります。古いバージョンでは「データ」→「テキストファイル」またはウィザード形式の取り込みで、列ごとに「列のデータ形式」を「文字列」に選べます。画面の表記が違っても、取り込み時に型を文字列に指定するという考え方は同じです。
設定で自動変換を止める方法
新しいMicrosoft 365では、「ファイル」→「オプション」→「データ」の中に、先頭のゼロを削除して数値に変換する自動変換を止める設定があるとされています。ただし、この設定が使えるかどうかはバージョンや更新状況によって異なりますので、お使いの環境の画面で確認してください。また、自動変換を止めても、取り込み時に型を指定する運用のほうが、他の人のPCでも同じ結果になるので安全です。
保存の仕方
取り込んだデータを編集したら、次のように保存します。
| 目的 | 保存形式 | 注意点 |
|---|---|---|
| 作業用に保存したい | Excelブック(.xlsx) | 列の文字列形式が保持される |
| 他システムに渡す | CSV | 再度Excelで開くと同じ問題が起きる |
「作業はxlsx、受け渡しだけCSV」と分けるのが基本です。CSVに書き出した後は、そのCSVを自分でもダブルクリックして開かないことが重要です。確認したいならメモ帳を使います。
値を文字列として強制する書き方
Excelに直接入力する場合は、先頭に半角のアポストロフィを付けると文字列扱いになります。
'0312345678
アポストロフィはセルの表示には出ません。ただし、CSVとして保存した時に、アポストロフィが値の一部として残るかどうかは操作や環境によって挙動が異なることがあるため、保存したCSVをメモ帳で開いて確認してください。
値をそのまま確認したい時:CSV⇔JSON変換ツールを使う
「Excelを通さずに、CSVの値を見たい」場面では、CSV ⇔ JSON 変換ツールも使えます。CSVのテキストを貼り付けると、ヘッダー行ありの場合は各行をキーと値のオブジェクトに変換します。このツールは値をすべて文字列として扱うので、0312345678 はそのまま "0312345678" と表示されます。
[
{
"会員番号": "0001",
"電話番号": "0312345678",
"備考": "1-2"
}
]
Excelで開く前に、「元のCSVの値は本当はこうだった」と確認する用途に向いています。CSVとJSONの変換全般で注意すべき点(文字化け、値の中のカンマ・改行など)は、CSVをJSONに変換する方法で詳しくまとめています。
すでに上書き保存してしまった時の対処
壊れたあとの復旧は、何が壊れたかによって難易度がまったく違います。
| 状況 | 復旧の考え方 |
|---|---|
| 先頭の0が消えただけ(桁数が一定) | TEXT 関数などで0を補える |
| 先頭の0が消えた(桁数が不定) | 元のCSVの再取得が確実 |
| 16桁以上の末尾が0になった | 元データの再取得しかない |
| 日付に変換された | 元データの再取得しかない |
まず確認すること
- 元のデータの出どころがあるか:システムからのダウンロード、メールで受け取った添付ファイルなど。再取得できるなら、それが最も確実
- バックアップや履歴があるか:OneDriveやGoogleドライブ、共有フォルダには「以前のバージョン」を戻せる機能がある場合があります
- Excelの自動回復ファイル:保存前のものが残っていることもありますが、確実ではありません
復旧できない時
実務では、復旧できずに再取得になるケースが多いと考えられます。そのため、普段から「元のCSVは触らない。作業用のコピーを作って、そちらで作業する」習慣をつけておくことが、結局いちばん手間がかかりません。
予防のチェックリスト
最後に、CSVを扱う前の確認事項をまとめます。
- [ ] CSVをダブルクリックで開いていないか
- [ ] 「データ」タブの取り込みで、型を文字列にして読み込んだか
- [ ] 作業用にコピーを作り、元ファイルは別に保管しているか
- [ ] 上書き保存の警告で、内容を読まずに「はい」を押していないか
- [ ] 保存後のCSVを、メモ帳で開いて確認したか
- [ ] 共有フォルダ上のCSVを、他の人が開いて保存する可能性はないか
まとめ
- 0落ち・桁落ち・日付化は、CSVに型情報がなく、Excelが中身を推測して変換することで起こる
- 開いただけではファイルは壊れない。上書き保存した時に確定する。保存前なら、閉じて「保存しない」を選べば無傷
- 15桁を超える数字の末尾や、日付に変換された値は、書式を「文字列」に変えても戻らない。元データの再取得が必要
- 防ぐには、ダブルクリックで開かず、「データ」タブの取り込みで型を文字列にして読み込む
- 中身を確かめたい時は、メモ帳かCSV ⇔ JSON 変換ツールを使う
なお、本記事の内容は一般的な整理であり、Excelのバージョンや設定、お使いのシステムの仕様によって画面や挙動が異なる場合があります。業務上重要なデータを扱う場合は、必ず元データのバックアップを取ったうえで作業してください。