Excelで16桁の数字が指数表示になるときの対処法

Google スプレッドシート(Excel)

CSVに入っていた注文番号をExcelで開いたら、

1234567890123456

が、

1.23457E+15

になった。

長い注文番号、顧客ID、伝票番号などを扱うと起きやすいトラブルです。

「表示が指数になっただけなら、セルを広げれば戻るのでは?」

と思いやすいのですが、16桁以上の番号では注意が必要です。

この記事では、長い番号をExcelで壊さず扱う方法と、CSV保存後に確認する方法を説明します。


Excelでは長い数字に注意する

Excelは通常の数値として扱える桁数に限りがあります。

特に16桁以上の番号は、商品コードや注文番号として扱う場合に注意が必要です。

たとえば、

1234567890123456

という注文番号。

これは計算するための数字ではありません。

注文を識別するための文字列です。

ところがExcelが数値として読み込むと、指数表示になったり、末尾の桁が元データと一致しなくなったりする可能性があります。


指数表示と値の変化は別問題

まず、

1.23457E+15

と表示されたからといって、すべての場合で値が壊れたとは限りません。

列幅が狭いため指数表示になっているだけのケースもあります。

ただし、16桁以上の番号を数値として読み込んだ場合は別です。

内部の値そのものが元の番号と一致しているか確認する必要があります。

そのため私は、

「指数表示を通常表示に戻せばOK」

とは考えません。

原本と照合します。


注文番号は文字列として読み込む

長い注文番号を扱うときの基本は、

最初から数値にしない

ことです。


16桁以上の番号を壊さず開く手順

手順1 CSVの原本をコピーする

直接編集しません。


手順2 Excelを起動する

CSVをダブルクリックしません。


手順3 空白ブックを開く

新しいシートを用意します。


手順4 「データ」をクリックする

上部メニューから選択します。


手順5 「テキストまたはCSVから」をクリックする

対象CSVを選びます。


手順6 「データの変換」を選ぶ

そのまま読み込みません。


手順7 注文番号列をクリックする

16桁以上の値がある列です。


手順8 データ型を「テキスト」にする

数値として扱わないようにします。


手順9 値を確認する

たとえば、

1234567890123456

がそのまま残っているか確認します。


手順10 シートへ読み込む

問題がなければ編集を始めます。


すでに16桁の番号が変わっていた場合

たとえば原本が、

1234567890123456

だったのに、Excel上で別の数字になっている。

この場合、セルの表示形式を文字列に変更しても元の値は復元できないことがあります。

そのため、

元CSV
受注管理画面
ダウンロード元データ
バックアップ

などから番号を確認します。

「末尾はたぶん6だった」と推測して直すのは避けます。


編集後はCSVとして保存する

Excelで編集が終わったら、納品形式に合わせてCSVへ戻します。


手順11 編集したシートを表示する

CSVにしたいシートを開きます。


手順12 「ファイル」をクリックする

保存画面を開きます。


手順13 「名前を付けて保存」を選ぶ

最初は別名がおすすめです。


手順14 ファイル名を変更する

たとえば、

orders_編集済.csv

とします。


手順15 CSV形式を選択する

日本語を含むCSVなら、納品先の指定を確認します。

指定がなければUTF-8を使うケースも多いですが、システムによって必要な文字コードは異なります。


手順16 保存する

CSVとして出力します。


保存したCSVをすぐExcelで開かない

ここは意外と重要です。

保存後、

「ちゃんとできたか確認しよう」

と思ってCSVをダブルクリックすると、Excelがまた自動変換します。

その結果、

CSV内部は正しいのに、

001245 → 1245

と表示されることがあります。

すると、

保存時に壊れたのか。

再びExcelで開いたときに変換されたのか。

分かりにくくなります。


保存後はテキストエディタでも確認する

私は納品前にCSVを文字として確認します。

MacならテキストエディットやVS Codeなど。

Windowsならメモ帳などでも確認できます。


手順17 保存したCSVをテキストエディタで開く

Excel以外で開きます。


手順18 長い注文番号を検索する

たとえば、

1234567890123456

を検索します。


手順19 先頭0のコードを検索する

001245

が残っているか確認します。


手順20 日付化しそうなコードも確認する

1-2

なども見ます。


納品前に見るポイント

最低限、次を確認しています。

  • 行数が大きく変わっていない
  • 必要な列が消えていない
  • 列順が変わっていない
  • 商品コードの先頭0が残っている
  • 16桁以上の注文番号が元データと一致している
  • 管理コードが日付に変わっていない
  • 編集対象外の列を変更していない
  • 指定された文字コードで保存している

CSV編集は、変更したセルだけ確認すれば終わりではありません。

触っていない列が変換されていないか

まで見るのがポイントです。


まとめ

Excelで16桁以上の数字を扱う場合は、

数字だから数値

と考えないことが大切です。

注文番号や顧客IDは、計算するための数字ではありません。

識別するための文字列です。

そのため、

CSVを直接開かない
↓
長い番号をテキスト型で読み込む
↓
編集する
↓
CSVで保存する
↓
テキストエディタで中身を確認する

という流れにすると事故を減らせます。

Excel上で正しく見えていることよりも、

保存されたCSVの文字列が元データと一致していること

を最後に確認する。

ここまでやって、CSV編集完了です。

コメント

タイトルとURLをコピーしました