
CSVをExcelで開いたら「00123」が「123」になったり、長い番号の末尾が変わったりするのは、Excelが数字の並びを自動的に数値として扱うためです。商品コードや会員番号など、計算しない番号は「文字列」として取り込むと防げます。
ただし、先頭の0が消えた場合と、16桁以上の番号が変わった場合では、対処が異なります。「E+」が付いた表示も、それだけでデータが壊れたとは判断できません。
まずはCSVを上書き保存せず、元ファイルのコピーを作ってください。元のCSVに正しい値が残っていれば、取り込み直せます。この記事ではWindows版のデスクトップExcelを中心に、確認と対処の順番を説明します。
まず確認:元のCSVにも変更があるかを調べる
Excelで表示が変わっていても、元のCSVまで書き換わっているとは限りません。CSVは文字で記録されたファイルなので、Excel以外で中身を確認できます。
- Excelでは保存せず、エクスプローラーで元のCSVをコピーします。
- コピーしたCSVを右クリックし、「プログラムから開く」から「メモ帳」を選びます。選択肢にない場合は、先にメモ帳を起動してファイルを開きます。
- 問題のコードや番号を探し、先頭の0や末尾の数字が元どおりか確認します。
たとえば、次のような値を確認してください。表の番号は説明用の架空データです。
| 商品コード | 管理番号 | 備考 |
|---|---|---|
| 00123 | 12345678901234567 | 架空データA |
| 00007 | 98765432109876543 | 架空データB |
| 01000 | 10000000000000001 | 架空データC |
商品コード「00123」が「123」になっていないか、管理番号「12345678901234567」の末尾まで一致しているかを見ます。表は正しい元の値の例です。
「E+」が付いていても、実際の値が残っていることがあります。逆に、画面上で桁数がそろっていても、長い番号の末尾が変わっていることがあります。見た目だけで判断せず、元の値と照合するのが大切です。
| 確認結果 | 次にすること |
|---|---|
| メモ帳では正しい値が残っている | 元のCSVから、対象列を文字列として取り込み直す |
| メモ帳でも0や末尾の数字が変わっている | 再ダウンロードやバックアップなどから元データを入手する |
| Excelで「E+」が付いて表示されている | 数式バーの値と元のCSVを照合し、表示だけの問題か確認する |

CSVをExcelで開くと数字が変わる3つの理由
先頭の0が消えるのは、数値と判定されるため
数値としての「00123」と「123」は同じ値なので、Excelが数値と判断すると先頭の0は通常表示されません。しかし、商品コードや郵便番号などでは、0も識別に必要な情報です。
CSVには、Excelのような「この列は文字列」というセルの設定がありません。そのため、ダブルクリックで開くと、内容に応じてExcel側がデータの扱い方を決めます。
長い番号が変わるのは、数値の有効桁数が15桁までだから
Excelで数値として保持できる精度は有効数字15桁です。16桁以上の番号を数値として取り込むと、16桁目以降が0になるなど、元の番号を正確に保持できないことがあります。
これは列幅を広げれば直る問題ではありません。管理番号、注文番号、会員番号などは、数字だけでできていても計算用の数値ではなく、最初から文字列として扱ってください。
E+は指数表示であり、それだけでは破損とはいえない
「1.23457E+11」のような表記は、大きな数を短く表示する指数表記です。表示形式が「標準」の場合などに使われます。セルを選択すると、数式バーでExcelが現在保持している値を確認できます。元のCSVの値と照合してください。
表示だけの問題なら、列幅を広げたり、セルの表示形式を「数値」にして小数点以下の桁数を0にしたりすると確認しやすくなります。ただし、16桁以上の番号がすでに数値化されている場合は、表示を変えても失われた桁は戻りません。
数字を変えずにCSVを取り込む方法
「テキストまたはCSVから」で、番号の列を文字列にする
Windows版Excelで「データ」タブに「テキストまたはCSVから」がある場合は、次の方法を使えます。メニュー名や画面はExcelのバージョンによって多少異なります。
- 空のExcelブックを開き、「データ」→「テキストまたはCSVから」を選びます。環境によっては「データの取得」→「ファイルから」の中にあります。
- 元のCSV、またはそのコピーを選びます。プレビューで文字化けや列の区切りに問題がないか確認します。
- 「データ型の検出」を選べる場合は「データ型を検出しない」を選びます。続けて「データの変換」をクリックします。
- Power Queryエディターの「適用したステップ」を確認します。「変更された型」という自動変換のステップがあれば、その左の×などで削除します。
- 商品コードや管理番号の列を選び、列見出し左のデータ型アイコンなどから「テキスト」を指定します。
- 必要に応じて、数量や金額など計算する列だけを適切な数値型に設定します。番号が元どおりであることを確認し、「閉じて読み込む」を選びます。
重要なのは、数値への変換より前に文字列として扱うことです。「変更された型」で数値になった後に、さらにテキストへの変換を追加するだけでは、失われた0や桁が戻らない場合があります。先に自動の型変換を取り除いてください。
「変更された型」がない場合は、無理に削除する必要はありません。列の型がテキストになっていることと、プレビューの値が元データと一致することを確認します。
Microsoft 365・Excel 2024では自動変換の設定も確認する
Microsoft 365版ExcelとExcel 2024には、自動データ変換を制御する設定があります。Windows版では「ファイル」→「オプション」→「データ」から確認できます。
「先頭の0を削除する変換」や「長い数値を15桁の精度に変換する処理」など、避けたい変換に対応する項目を無効にします。これにより、CSVを直接開く場合などの意図しない変換を防ぎやすくなります。
ただし、この設定はPower Queryの型変換には直接適用されません。前の手順で取り込む場合は、Power Query側でも型の指定が必要です。また、設定を変更しても、すでに変わったデータは修復されません。
Excel 2021以前など、この機能がない版では、文字列を指定して取り込む方法を使ってください。Mac版の対応製品にも設定はありますが、メニュー位置は異なります。Web版Excelでは、ここで紹介したWindows版と同じ操作を前提にしないでください。
消えた0や変わった番号は元に戻せる?
元のCSVが正しければ、取り込み直せる
メモ帳で確認した元のCSVに正しい番号が残っていれば、Excel上で一つずつ直す必要はありません。元ファイルから、対象列をテキストにして取り込み直します。
一方、変更された値でCSVを上書きし、元データも残っていない場合は、セルの表示形式を「文字列」に変えても復元できません。元のシステムからの再出力、ダウンロードし直し、バックアップなどを確認してください。
決まった桁数の0埋めはできるが、完全な復元とは違う
「商品コードは必ず5桁」と分かっているなら、123を00123の形に整えられます。見た目だけを5桁にしたい場合は、セルの表示形式で「ユーザー定義」を選び、「00000」と指定します。ただし、セルの中の値は数値の123のままです。
5桁の文字列を作りたい場合は、A2に123が入っているとして、別のセルに =TEXT(A2,"00000") と入力すると「00123」を作れます。結果を確定させるときは、コピーして「値」として貼り付けます。
この方法が使えるのは、正しい桁数を別の資料や仕様で確認できる場合です。もともと「0123」だったのか「00123」だったのかは、123だけを見ても分かりません。また、長い番号の末尾が変わった場合、TEXT関数では失われた数字を復元できません。
保存と開き直しで、同じ変換を繰り返さないために
Excelで作業を続けるなら、取り込み後のブックはExcelブック形式(.xlsx)で保存すると、文字列として扱う設定などを保持できます。元のCSVは別に残しておきましょう。
別のサービスに渡すためCSVが必要な場合は、作業用の.xlsxとは分けて出力します。CSVではExcelの表示形式や列の型を保持できません。出力後はメモ帳などでコードや番号を確認してください。
正しいCSVを作っても、再びExcelでダブルクリックして開くと、自動変換が起こる可能性があります。確認のために開くときも、文字列として取り込む手順を使うと安全です。
CSVとExcelの数字変換についてよくある質問
開いた後でセルを「文字列」に変えれば直りますか?
消えた先頭0や、精度が失われた長い番号は戻りません。文字列への変更は、それまでに失われた情報を復元する操作ではないためです。正しい元データから取り込み直してください。
CSVの数字をダブルクォーテーションで囲めば防げますか?
必ず防げるわけではありません。CSVのダブルクォーテーションは、カンマなどを含む項目を区切りと混同しないためにも使われます。「文字列として扱う」というExcelへの指定ではないので、取り込み時に列の型を設定してください。
UTF-8で保存すれば、0が消える問題も直りますか?
直りません。UTF-8は文字コードの種類で、文字化けへの対処に関係します。数字を数値として扱うか文字列として扱うかとは別の問題です。
番号の先頭にアポストロフィを付けてもよいですか?
Excelのセルへ手入力するときは、先頭のアポストロフィで文字列として扱えます。ただし、CSVの中身に直接付ける方法はおすすめしません。取り込み先によっては記号自体がデータとして残るため、元のCSVを書き換えず、Excel側の取り込み設定で対応する方が確実です。
まとめ:計算しない番号は、最初から文字列で取り込む
CSVで先頭0や長い番号を守るポイントは、変換された後に直すのではなく、取り込み時に文字列として扱うことです。困ったときは、まず上書きを避けて元のCSVを確認し、正しい値が残っていれば取り込み直してください。作業用には.xlsxを使い、CSVで受け渡すときは出力後の値まで確認しましょう。