【Excelの罠】CSVを開くと「0」が消える?現役SEが教えるデータ崩れの原因と対策

【Excelの罠】CSVを開くと「0」が消える?現役SEが教えるデータ崩れの原因と対策

記事
IT・テクノロジー
業務でCSVファイルを扱っていて、こんな経験はありませんか?

・JANコードや電話番号の先頭の「0」が消える
・数字のはずが、勝手に「日付」に変わる
・商品コードが「4.90123E+12」のような変な表記になる

実はこれ、Excelの「親切すぎる自動判別」が原因で起きる、実務上の大きなトラブルです。


■ なぜデータが壊れるのか?

CSVは「この列は文字」「この列は数字」という情報を持たない、シンプルなテキストファイルです。
そのため、Excelで開いた瞬間に、Excel側が「これは数字だね」「これは日付だね」と勝手に判断してしまいます。

たとえば「01234」という社員コードがあると、Excelは「数字に先頭の0はいらない」と判断して「1234」に書き換えます。
一度書き換わったまま保存すると、元のデータは戻りません。


■ 特によくあるトラブル

・JANコード・商品コード:桁数が変わったり指数の表記になったりして、システムの取り込みでエラーになる
・郵便番号・社員コード:先頭の0が落ちて、正しく検索できなくなる
・「1-2」のような番号:日付(1月2日)に変わってしまう

いちばん怖いのは、0が消えたCSVを、そのまま基幹システムや取引先に渡してしまうことです。
見た目は普通のデータなので、相手から「取り込めない」と言われるまで気付けません。


■ 対策方法

① Excelの「データ」→「テキストまたはCSVから」で読み込み、コードの列を「テキスト」にする
  ダブルクリックで開かずに、この手順で読み込めば、0は消えません。設定を保存して、次から同じ形で読み込むこともできます
② 確かめるときは、メモ帳やテキストエディタで開く
  Excelで開いた画面では0が消えて見えるので、中身を見るだけならエディタが確実です
③ VBA(マクロ)で、Excelに開かせずに文字のまま読む
  毎回の操作がいらず、いちばん確実です

ただ、①は毎回の操作を1つでもまちがえると0が消えますし、そのあと列を並べ替えたり、日付の形を直したりする作業も残ります。


■ 毎月、同じCSVを直しているなら

私は、CSVをExcelで開かずに文字のまま読み込み、指定の形に並べ替えて書き出すExcelのツールを作って使っています。

・先頭の0を消さない(「1200」を8桁の「00001200」にそろえることもできる)
・数字の列に「4.90123E+12」のような値が入っていたら、エラーとして知らせる
・日付の形・金額のカンマ・全角の数字を、指定どおりにそろえる
・どの列を、どこに、どう書くかは「対応表」に並べるだけ
・本番の前に、先頭100件を試しに変換して確認できる

0が消えるのを気にしながら、毎月同じ直しをくり返す作業から解放されます。


■ 同じことで困っている方へ

このツールのVBAコード全文と、貼り付け手順・使い方を、ココナラで公開しています。
Excelにコードを貼るだけで使えます。

▽CSVを取引先指定の形式に変換(この記事のツール)


「うちの形式に合わせて作ってほしい」「Excelのまま読みたい・書式付きのExcelで出したい」という場合は、専用版でお作りします。お気軽にご相談ください。

▽サービス(専用版)
「取引先ごとの指定フォーマットに変換します」


現役のSEとして、専門用語はなるべく使わずにご説明します。
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す