先に、答え。

00123のような識別子は数値ではなく文字列として取り込みます。表示形式を後から変えるだけでは、すでに失われた桁を元どおりに復元できない場合があります。

この記事の内容

対象・検証範囲:Windows版Excelのインポート手順。Microsoft公式資料の確認のみ。実機未検証。

最初にCSVの中身を確認する

Excelでは「123」なのに、本来の商品コードは「00123」。まずCSVをテキストエディターで開き、ファイルの中にゼロが残っているか確認します。

元のCSVの値 Excelでの値 次にすること
00123 123 文字列型を指定して元CSVから取り込み直す
123 123 出力元のデータ・桁数の仕様を確認する
00000 0 元CSVを文字列として取り込む

CSVにはExcelのセル書式を保存する仕組みがありません。"00123"と引用符で囲んでも、それだけでExcelの文字列型が保証されるわけではありません。

取り込み時に文字列へ指定する

Windows版ExcelのPower Queryによる取り込みを想定します。必ず元CSVのコピーで作業します。

  1. 空のブックで「データ → テキストまたはCSVから」を選びます。
  2. CSVを選んで「データの変換」に進みます。
  3. 右側の「適用したステップ」を確認します。自動で追加された「変更された型」でIDが数値になっている場合は、そのステップを削除するか型変換の指定を修正します。
  4. ID列のデータ型をテキストにします。数値化された結果を後からテキストにするのではなく、ゼロの残っている元の値に対して適用します。
  5. プレビューに「00123」が見えることを確認して「閉じて読み込む」を実行します。

操作中にすでに「123」になっているなら、その状態の型を変えてもゼロは復活しません。「ソース」など、型変換前のステップまで戻って確認することが重要です。

確認用の小さな例

次の架空のIDを含むCSVで試すと、ゼロと桁数の両方を確認できます。

item_id,name
00123,ノート
00007,ペン
123456789012345678,ファイル

期待する状態は、すべてのIDが元の文字列と完全に一致することです。長いIDは指数表示になっていないかだけでなく、末尾の数字が変わっていないかも確認します。Excelが数値として扱った長い番号では、精度の制限が問題になるためです。

取り込んだブックをCSVに保存し直した場合は、出力ファイルもエディターで確認してください。CSVをまたダブルクリックすると、次の読み込みで自動変換が再び起きる可能性があります。

00000という表示形式では足りない理由

ユーザー定義の表示形式で5桁に見せる方法は、固定桁の見た目を揃える用途には使えます。ただし「00123」という文字列として扱いたいのか、「123」という数値を5桁で表示したいのかは別の要件です。

「5桁である」と仕様が確定していればゼロ埋めで再構成できる場合があります。しかし、3桁と5桁のIDが混在するデータでは、消えたゼロの数を推測できません。自動で桁を補う前に出力元へ戻ります。

別のツールへ渡すときの注意

PythonのCSV読み込みでも、int()に変換すればゼロは失われます。JSONへ変換する場合も、識別子は文字列のまま出力します。CSVをJSONへ変換する例では、この扱いを確認できます。

本記事はMicrosoft公式資料を基にしていますが、Excelの各版の画面操作は実機未検証です。Windows版以外では画面や機能の提供状況を公式ヘルプで確認してください。

参考にした公式資料

公式資料に基づく説明です。アプリの画面操作は本制作環境では実機検証していません。 編集・検証方針