CSVをExcelで開くと先頭の0が消える原因と対処法|郵便番号・商品コードを崩さない方法

CSVをExcelで開いたら、「00123」が「123」になった、郵便番号や商品コードの先頭の0が消えてしまった——そんな経験はありませんか。

これはCSVのデータが壊れているのではなく、Excelが「数値」と判断して自動変換していることが主な原因です。コードや郵便番号のように計算しない値は、数値ではなく文字列として扱うのがポイントです。

この記事では、すでに0が消えてしまった場合の直し方から、CSVを開くときに0を消さない方法、毎回同じCSVを扱うときの効率化まで順番に解説します。

CSVをExcelで開いたときに先頭の0が消える原因と、文字列として取り込んで0を保持する対処法を示した図

CSVをExcelで開くと先頭の0が消えるのはなぜ?

CSVは「カンマ区切りの文字データ」です。ところがExcelはCSVを開く際、各列の内容を見て「これは数値」「これは日付」と自動的に判断します。

たとえばCSV内に次のような値が入っていたとします。

CSV上の値Excelでそのまま開いた場合
00123123
0123456123456
000789789

Excelがこれらを数値と判断すると、数値として不要な先頭の0を削除します。Microsoftも、Excelでは先頭の0を含むデータが自動的に数値へ変換される場合があると案内しています。

特に注意したいのは、次のような「数字だけれど計算には使わないデータ」です。

  • 郵便番号
  • 商品コード・品番
  • 社員番号・会員番号
  • 電話番号
  • 取引先コード
  • 管理番号

これらは見た目が数字でも、実務上は識別子なので文字列として扱う方が安全です。

方法1:CSVを「テキスト/CSVから」読み込む【おすすめ】

毎回CSVをダブルクリックして開くのではなく、Excelのインポート機能を使う方法です。特に、商品コードや顧客コードなどを含む業務CSVではこの方法が確実です。

  1. Excelを新規で開く
  2. 「データ」タブを選択
  3. 「テキストまたはCSVから」を選択
  4. 対象のCSVファイルを指定
  5. 必要に応じて「データの変換」を開く
  6. 先頭0を残したい列のデータ型を「テキスト」に変更
  7. 「閉じて読み込む」を実行

Power Queryを経由すると、対象列を文字列として明示できます。Microsoft公式でも、CSVを「テキスト/CSVから」読み込み、列のデータ型をテキストにする方法が案内されています。

毎月同じ形式のCSVを受け取る業務なら、この方法は特に有効です。一度Power Queryで設定しておけば、次回以降はファイルを差し替えて更新するだけで同じ処理を再利用できます。

方法2:入力前にセルの表示形式を「文字列」にする

CSVではなく、Excelシートへ直接コピー&ペーストする場合に使いやすい方法です。

  1. 0を残したい列またはセルを選択
  2. 右クリックして「セルの書式設定」
  3. 分類から「文字列」を選択
  4. その後でデータを貼り付ける

ポイントは、貼り付ける前に文字列へ設定しておくことです。すでに「00123」が「123」に変換された後から文字列へ変更しても、消えた0は自動では戻りません。

方法3:桁数が決まっているならユーザー定義書式を使う

「必ず6桁の商品コード」のように桁数が固定されているなら、ユーザー定義の表示形式でも対応できます。

たとえば6桁なら、セルの書式設定で次のように指定します。

000000

「123」と入力しても「000123」と表示されます。

ただし、この方法は表示上0を付けているだけです。セル内部の値は123のままなので、CSVへ再出力したり他のシステムへ渡したりすると、期待した形にならない場合があります。

他システムへ提出するコードや、CSVに書き戻す必要があるデータでは、最初から文字列として保持する方法がおすすめです。

すでに先頭の0が消えてしまった場合はどう直す?

元の桁数が分かっていれば、TEXT関数で補うことができます。

たとえばA2に「123」が入っていて、本来6桁のコードなら次の式です。

=TEXT(A2,"000000")

結果は「000123」になります。

ただし、元データの桁数が一定でない場合や、本来いくつ0が付いていたのか分からない場合は、変換後のデータだけから完全に復元することはできません。可能なら元CSVを再度読み込み直す方が安全です。

CSVでは「先頭0」以外の自動変換にも注意

ExcelでCSVを扱うときは、先頭0以外にも次のような変換が起こることがあります。

  • 長い番号が「1.23457E+15」のような指数表示になる
  • 16桁以上の数値で末尾の桁が変わる
  • 「1-2」などが日付として認識される
  • 文字列の一部が意図しない数値形式へ変換される

Excelの新しいバージョンでは、自動データ変換に関する設定も用意されています。業務でCSVを頻繁に扱う場合は、「数字に見えるコードは文字列」というルールを意識しておくと事故を防ぎやすくなります。

毎回同じCSV加工をしているなら「直し方」自体を自動化する

今回のような先頭0の処理だけならExcelでも対応できます。ただ、実際の業務では次の作業がセットになっていないでしょうか。

  • 不要な列を削除する
  • 列の順番を入れ替える
  • 商品コードを文字列にする
  • 日付形式を統一する
  • 列名を提出先の名称に変更する
  • 完成したファイルを別名で保存する

1回なら数分でも、毎週・毎月繰り返すと大きな手間になります。

DataPitaは、こうしたExcel・CSVの定型的なデータ加工を繰り返しやすくするために開発しているサービスです。元データと完成イメージをもとに変換ルールを作り、次回から同じ加工を再現できる仕組みを目指しています。

Excel・CSVの定型作業をもっとラクにしませんか?

現在DataPitaでは、正式公開前に実際の使い勝手を試していただく先行テスターを募集しています。

DataPitaの先行テストについて見る →

まとめ

CSVをExcelで開いたときに先頭の0が消えるのは、Excelがその列を数値と判断するためです。

  • CSVは「テキスト/CSVから」で読み込む
  • コード列のデータ型を「テキスト」にする
  • 直接入力・貼り付けなら事前に文字列書式へ変更する
  • 固定桁ならユーザー定義書式も使える
  • すでに消えた場合はTEXT関数で復元できることもある

特に業務用CSVでは、データを開いた瞬間に意図しない変換が起こることがあります。元データを残したまま、変換手順を決めて処理することがミス防止につながります。

参考