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
元のCSVを別名で残す
Excelで開いた状態のまま上書き保存せず、受け取った元CSVを残してください。 原因を確認する前に保存し直すと、先頭ゼロだけでなく日付や長い番号も変わることがあります。
- 2
元CSVを「メモ帳」などで開いて中身を確認する
CSVをダブルクリックするとExcelで開くことがあるため、ここではExcel以外のアプリで中身を確認します。
Windows
メモ帳で開くCSVファイルを右クリック → [プログラムから開く]→[メモ帳]
Mac
テキストエディットで開くCSVファイルを右クリック → [このアプリケーションで開く]→[テキストエディット]
開いたらここを確認社員番号や商品コードを検索し、
00123のままなら復元は不要です。 すでに123なら、CSV自体から0が消えています。 確認後は保存せず閉じてください。 - 3
Excelで確認するだけなら、対象列を文字列として読み込む
Excelでは、数字だけの文字列を数値へ自動変換することがあります。 「テキスト/CSVから」の読み込みなどを使い、社員番号・商品コード・郵便番号のような列を文字列として扱うと、
00123のような値を保持しやすくなります。 - 4
ファイル自体から0が消えているなら、戻す根拠を確認する
たとえば「社員番号は必ず6桁」のような仕様が分かっていれば、桁数に合わせる判断ができます。 しかしルールが分からない状態では、
123が0123だったのか00123だったのか分かりません。 推測で0を足さないでください。
Example
「表示が変わった」と「データが変わった」は別です
00123123123最初の「Excel表示が123」の段階なら、元CSVにはまだ00123が残っている可能性があります。 そのまま保存し直して初めて、CSV側も123へ変わってしまうことがあります。
社員番号・商品コード・郵便番号は「数値」とは限らない
数字だけでできていても、足し算や平均を取るための値とは限りません。 社員番号、商品コード、会員番号、郵便番号などは、数字の形をした「識別用の文字列」として扱う方が適切な場合があります。
こうした列を数値として扱うと、先頭ゼロが消えたり、桁数の大きい番号が別の表示になったりすることがあります。 CSVをExcelで編集する場合は、対象列を文字列として読み込むことを検討してください。
保存前と保存後のCSVがある場合
本当に値が変わったか、2つのCSVを比較できます
元CSVとExcelなどで保存し直したCSVが残っているなら、CSV比較で変更された行・値を確認できます。 「表示だけが違う」のか、「保存後のCSVで00123が123に変わった」のかを切り分ける材料になります。
すでに消えた0を、見た目だけで戻さない
たとえば 123 という値だけを見ても、元が 0123、00123、000123 のどれだったかは分かりません。 「5桁固定」「マスタ上のコードは00001〜99999」のような根拠があるときだけ、そのルールに従って復元します。
元データが手元にあるなら、加工済みファイルから推測するより元データを使い直す方が安全です。
取込用CSVを整えている場合
CSVお手本変換は先頭ゼロを推測復元しません
CSVお手本変換は、文字コード・BOM・改行・区切り・条件を満たす列順を安全に揃えるためのツールです。 失われた先頭ゼロやデータ値の意味は推測して書き換えません。 形式も合わせたい場合は、先頭ゼロの確認を終えてから利用してください。
CSVお手本変換を確認する →よくある疑問
Excelで123と見えたら、00123はもう消えていますか?
まだ消えていない可能性があります。まず元CSVを上書きせず、テキストとして開いて00123が残っているか確認してください。
セルの表示形式を「00000」にすれば直りますか?
Excel上で5桁に見せる用途には使えますが、すでに失われた元の桁数を自動で特定できるわけではありません。 また、別システムへ渡すCSVの値を直したい場合は、表示だけでなく書き出されたCSVの内容を確認する必要があります。
先頭ゼロがある列はすべて文字列にすればよいですか?
社員番号や商品コードなど計算しない識別子なら、文字列として扱うのが自然です。 一方、実際に数値計算へ使う列まで文字列にする必要はありません。列の用途で判断してください。