Problem solving guide

CSVの先頭ゼロが消える原因と直し方

社員番号や商品コードの「00123」が、ExcelでCSVを開いたら「123」になることがあります。 まず確認したいのは、0が画面上で消えているだけなのか、CSVファイル自体から消えてしまったのかです。 この2つでは対処がまったく違います。

まず2つのケースを分ける

ケース1

Excelでは「123」だが、元CSVには「00123」が残っている

CSVそのものは壊れていません。開いたソフトが値を数値と判断し、先頭の0を表示しなくなっている状態です。 この場合は、CSVを書き換えるより読み込み方を変える方が安全です。

ケース2

CSVを保存し直したあと、ファイル自体が「123」になっている

この場合は先頭の0が実際に失われています。元データや「5桁固定」などの仕様がない限り、 何個の0を戻すべきかを値だけから判断することはできません。

この順番で確認する

  1. 1

    元のCSVを別名で残す

    Excelで開いた状態のまま上書き保存せず、受け取った元CSVを残してください。 原因を確認する前に保存し直すと、先頭ゼロだけでなく日付や長い番号も変わることがあります。

  2. 2

    元CSVを「メモ帳」などで開いて中身を確認する

    CSVをダブルクリックするとExcelで開くことがあるため、ここではExcel以外のアプリで中身を確認します。

    Windows

    メモ帳で開く

    CSVファイルを右クリック → [プログラムから開く]→[メモ帳]

    Mac

    テキストエディットで開く

    CSVファイルを右クリック → [このアプリケーションで開く]→[テキストエディット]

    開いたらここを確認

    社員番号や商品コードを検索し、00123 のままなら復元は不要です。 すでに 123 なら、CSV自体から0が消えています。 確認後は保存せず閉じてください。

  3. 3

    Excelで確認するだけなら、対象列を文字列として読み込む

    Excelでは、数字だけの文字列を数値へ自動変換することがあります。 「テキスト/CSVから」の読み込みなどを使い、社員番号・商品コード・郵便番号のような列を文字列として扱うと、00123 のような値を保持しやすくなります。

  4. 4

    ファイル自体から0が消えているなら、戻す根拠を確認する

    たとえば「社員番号は必ず6桁」のような仕様が分かっていれば、桁数に合わせる判断ができます。 しかしルールが分からない状態では、123 が 0123 だったのか 00123 だったのか分かりません。 推測で0を足さないでください。

Example

「表示が変わった」と「データが変わった」は別です

元CSV00123
Excel表示123
上書き後CSV123

最初の「Excel表示が123」の段階なら、元CSVにはまだ00123が残っている可能性があります。 そのまま保存し直して初めて、CSV側も123へ変わってしまうことがあります。

社員番号・商品コード・郵便番号は「数値」とは限らない

数字だけでできていても、足し算や平均を取るための値とは限りません。 社員番号、商品コード、会員番号、郵便番号などは、数字の形をした「識別用の文字列」として扱う方が適切な場合があります。

こうした列を数値として扱うと、先頭ゼロが消えたり、桁数の大きい番号が別の表示になったりすることがあります。 CSVをExcelで編集する場合は、対象列を文字列として読み込むことを検討してください。

保存前と保存後のCSVがある場合

本当に値が変わったか、2つのCSVを比較できます

元CSVとExcelなどで保存し直したCSVが残っているなら、CSV比較で変更された行・値を確認できます。 「表示だけが違う」のか、「保存後のCSVで00123が123に変わった」のかを切り分ける材料になります。

CSV比較を使う →

すでに消えた0を、見た目だけで戻さない

たとえば 123 という値だけを見ても、元が 0123、00123、000123 のどれだったかは分かりません。 「5桁固定」「マスタ上のコードは00001〜99999」のような根拠があるときだけ、そのルールに従って復元します。

元データが手元にあるなら、加工済みファイルから推測するより元データを使い直す方が安全です。

取込用CSVを整えている場合

CSVお手本変換は先頭ゼロを推測復元しません

CSVお手本変換は、文字コード・BOM・改行・区切り・条件を満たす列順を安全に揃えるためのツールです。 失われた先頭ゼロやデータ値の意味は推測して書き換えません。 形式も合わせたい場合は、先頭ゼロの確認を終えてから利用してください。

CSVお手本変換を確認する →

よくある疑問

Excelで123と見えたら、00123はもう消えていますか?

まだ消えていない可能性があります。まず元CSVを上書きせず、テキストとして開いて00123が残っているか確認してください。

セルの表示形式を「00000」にすれば直りますか?

Excel上で5桁に見せる用途には使えますが、すでに失われた元の桁数を自動で特定できるわけではありません。 また、別システムへ渡すCSVの値を直したい場合は、表示だけでなく書き出されたCSVの内容を確認する必要があります。

先頭ゼロがある列はすべて文字列にすればよいですか?

社員番号や商品コードなど計算しない識別子なら、文字列として扱うのが自然です。 一方、実際に数値計算へ使う列まで文字列にする必要はありません。列の用途で判断してください。