【注意!】ExcelでCSVを開くと先頭の0が消えてしまう問題
この記事の内容
- ExcelでCSVファイルを開くと、「001」などの先頭ゼロが「1」に変換されてしまう
- これはExcelがセルの書式を「標準(数値)」と自動判定するために起こる
- 文字列として保存することで先頭ゼロを保持できるが、再度Excelで開くと消えてしまう
- シリアル番号やパスワードなど0が重要な意味を持つデータで特に致命的になる
- 根本的な解決策は、CSVファイルをExcelで扱わないことが推奨される
CSVファイルをExcelで開くと何が起きるか
CSVファイルを扱うとき、WindowsにExcelがインストールされているとCSVファイルの関連付けが自動的にExcelになっていることが多いです。そのため、CSVファイルをダブルクリックするとExcelが起動して開いてくれます。
問題は、このときExcelが各セルの内容を自動判定して書式を決める点です。例えば、CSVファイルに 001 と記載されていると、Excelは「これは数字だから先頭のゼロは不要」と判断し、1 に変換してしまいます。
これはExcelの書式設定が「標準」になっているために起こる動作です。「標準」では数値と判断された場合、先頭のゼロが自動的に取り除かれてしまいます。
どのような場面で問題になるか
例えば、以下のようなデータを扱う場合に問題が発生します。
機器のシリアル番号やパスワードなど、001 や 0042 のように先頭ゼロに意味があるデータの場合、Excelで開いた瞬間に 1 や 42 に変わってしまいます。
よくあるシナリオとしては次のようなケースです。
- 誰かがCSVファイルを正しく作成して保存する
- 別の担当者が「ちょっと確認しよう」とCSVをExcelで開く
- 内容を確認してそのまま上書き保存して閉じる
- このとき、先頭ゼロがすべて消えた状態で保存されてしまう
開いて確認しただけのつもりが、データが変わってしまっている——これが非常に気づきにくく、世界中で多くの人が同じ問題に悩まされています。
「文字列」書式で保存しても根本解決にはならない
Excelのセル書式を「文字列」に変更してから 001 を入力すると、先頭ゼロを保持したまま保存できます。
- セルを選択する
- 書式設定を「文字列」に変更する
001と入力して保存する
この状態でExcelブック形式(.xlsx)で保存する場合は問題ありません。文字列という定義がファイルに保持されるため、再度開いても 001 のままです。
CSV形式で保存した場合も、保存するまでは先頭ゼロがCSVファイル内に正しく記録されています。メモ帳で開いて確認すると、001 がちゃんと入っています。
しかし問題は、この保存済みCSVを再度Excelで開いたときです。Excelは開く際に再び自動判定を行うため、文字列として保存されていた情報を読み取らず、またゼロを取り除いてしまいます。
保存せずに閉じれば元のCSVファイルは変わりませんが、うっかり上書き保存してしまうとゼロなしのデータで上書きされてしまいます。
根本的な対処法
CSVファイルはExcelで開かない
最も確実な対処法は、CSVファイルをExcelで直接開かないことです。
先頭ゼロが含まれるCSVファイルを確認・編集する場合は、以下のようなツールを使うことをお勧めします。
- Visual Studio Code(テキストエディタとして扱える)
- メモ帳(シンプルな確認用)
- CSV専用のビューアー(例:Rainbow CSV、Excel Viewerなどのエクステンション)
VSCodeの拡張機能を活用する
Visual Studio CodeにはCSVを見やすく表示してくれる拡張機能があります。例えば「Rainbow CSV」や「Excel Viewer」といった拡張機能を使うと、CSVの内容を表形式で確認しながらも、データを変換せずそのまま扱うことができます。
まとめ
ExcelでCSVファイルを開くと、先頭に0がついた数値(001、002など)が自動的に数値として解釈され、ゼロが取り除かれてしまいます。これはExcelのセル書式「標準」による自動判定の動作です。
セル書式を「文字列」に変更することで一時的に対処できますが、CSVとして保存してから再度Excelで開くと、やはりゼロが消えてしまいます。シリアル番号や管理番号など先頭ゼロに意味があるデータを扱う場合、この問題は致命的なデータ破損につながります。
根本的な解決策は、先頭ゼロを含むCSVファイルをExcelで直接開かないことです。Visual Studio CodeやCSV専用ビューアーを活用し、データを安全に取り扱いましょう。