CSVをExcelで開くと数字が変わるのはなぜ?先頭0・長い数字の対処法

当ページのリンクには広告が含まれています。
CSVをExcelで開くと数字が変わるのはなぜ?先頭0・長い数字の対処法

CSVをExcelで開いたら「00123」が「123」になったり、長い番号の末尾が変わったりするのは、Excelが数字の並びを自動的に数値として扱うためです。商品コードや会員番号など、計算しない番号は「文字列」として取り込むと防げます。

ただし、先頭の0が消えた場合と、16桁以上の番号が変わった場合では、対処が異なります。「E+」が付いた表示も、それだけでデータが壊れたとは判断できません。

まずはCSVを上書き保存せず、元ファイルのコピーを作ってください。元のCSVに正しい値が残っていれば、取り込み直せます。この記事ではWindows版のデスクトップExcelを中心に、確認と対処の順番を説明します。

目次

まず確認:元のCSVにも変更があるかを調べる

Excelで表示が変わっていても、元のCSVまで書き換わっているとは限りません。CSVは文字で記録されたファイルなので、Excel以外で中身を確認できます。

  1. Excelでは保存せず、エクスプローラーで元のCSVをコピーします。
  2. コピーしたCSVを右クリックし、「プログラムから開く」から「メモ帳」を選びます。選択肢にない場合は、先にメモ帳を起動してファイルを開きます。
  3. 問題のコードや番号を探し、先頭の0や末尾の数字が元どおりか確認します。

たとえば、次のような値を確認してください。表の番号は説明用の架空データです。

商品コード管理番号備考
0012312345678901234567架空データA
0000798765432109876543架空データB
0100010000000000000001架空データC

商品コード「00123」が「123」になっていないか、管理番号「12345678901234567」の末尾まで一致しているかを見ます。表は正しい元の値の例です。

「E+」が付いていても、実際の値が残っていることがあります。逆に、画面上で桁数がそろっていても、長い番号の末尾が変わっていることがあります。見た目だけで判断せず、元の値と照合するのが大切です。

確認結果次にすること
メモ帳では正しい値が残っている元のCSVから、対象列を文字列として取り込み直す
メモ帳でも0や末尾の数字が変わっている再ダウンロードやバックアップなどから元データを入手する
Excelで「E+」が付いて表示されている数式バーの値と元のCSVを照合し、表示だけの問題か確認する
元の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のバージョンによって多少異なります。

  1. 空のExcelブックを開き、「データ」→「テキストまたはCSVから」を選びます。環境によっては「データの取得」→「ファイルから」の中にあります。
  2. 元のCSV、またはそのコピーを選びます。プレビューで文字化けや列の区切りに問題がないか確認します。
  3. 「データ型の検出」を選べる場合は「データ型を検出しない」を選びます。続けて「データの変換」をクリックします。
  4. Power Queryエディターの「適用したステップ」を確認します。「変更された型」という自動変換のステップがあれば、その左の×などで削除します。
  5. 商品コードや管理番号の列を選び、列見出し左のデータ型アイコンなどから「テキスト」を指定します。
  6. 必要に応じて、数量や金額など計算する列だけを適切な数値型に設定します。番号が元どおりであることを確認し、「閉じて読み込む」を選びます。

重要なのは、数値への変換より前に文字列として扱うことです。「変更された型」で数値になった後に、さらにテキストへの変換を追加するだけでは、失われた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で受け渡すときは出力後の値まで確認しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

アニメの感想・評価、ガジェットレビュー記事、モノ・サービスの使い方・操作方法に関する記事を中心に書いています。

目次