受注データのJANコード・バーコードがExcelで「1.23E+12」に変わってしまう — 0落ちとは別の注意点
公開:
JANコードやバーコード番号のような桁数の多い数値を含む受注データをExcelで開いたら、「4.57135E+12」のような見慣れない表記に変わっていた——という経験はないでしょうか。この状態のままCSVとして保存・取込を行うと、商品コードが正しく読み取れず取込エラーや品目の重複を引き起こします。
同じ「CSVの数値がおかしくなる」症状として、先頭のゼロが消える「0落ち」がよく知られています(基本的な対処は基幹システムへのCSV取込でよくあるエラーと対処法で扱っています)。ですが指数表記化は0落ちとは性質の異なる、もう一段厄介な事故です。この記事では両者の違いと、指数表記化を防ぐための予防策を整理します。
指数表記(E+12など)とは何か
Excelは数値を入力すると、桁数が一定数を超えたセルを自動的に指数表記(科学的記数法)で表示することがあります。例えば13桁のJANコード「4571349616187」をExcelのセルに数値として入力すると、表示が「4.57135E+12」のように変換されてしまうケースです。
スマレジの公式ヘルプでは、この現象を「CSVファイル内の数値が文字化けしてしまう(E+12など)」として案内しており、そりまち(invoice-oh)の公式サポートページでも同様に「CSVファイル内の数値が指数表記され(E+12など)、インポートができない場合の対処方法」として扱われています。桁数の多い数値をCSVで扱う複数のシステムで共通して起きる、一般的な現象であることがわかります。
0落ちとは別の事故である理由
「0落ち」も「指数表記化」も、どちらもExcelがセルの値を「数値」として解釈することで起きる事故という点では共通しています。ですが、実害の質が異なります。
| 0落ち | 指数表記化 | |
|---|---|---|
| 起きること | 先頭のゼロが消える | 数値が「4.57135E+12」のような表記に変わる |
| 桁数・情報 | 保持されている(表示上ゼロが無いだけ) | 下位の桁が丸められ、情報そのものが失われることがある |
| 元に戻せるか | 列を「文字列」に変更すれば復元できる | 一度この状態で保存すると、CSVファイルには「4.57135E+12」という文字列がそのまま書き込まれ、元の数値には戻せない |
0落ちは「表示がおかしいだけで元データは無事」なのに対し、指数表記化は保存してしまうと元の数値そのものが失われるという点で、質的に一段重い事故です。JANコードのように1桁でも違えば別の商品として扱われる番号体系では、この違いが実務上の被害の大きさに直結します。
なぜ元に戻せなくなるのか
Excelのセルに表示された「4.57135E+12」は、あくまで画面上の表示形式です。この状態のセルをそのままにして「CSV形式で保存」を実行すると、保存されるCSVファイルには画面に表示されているとおりの指数表記の文字列が書き込まれます。
保存後にファイルを開き直しても、CSVファイル自体にはもう元の「4571349616187」という数値は残っていません。ファイルに書き込まれてしまった「4.57135E+12」という文字列から、失われた下位の桁を復元する方法はないため、正しい値を得るには元データ(注文書や取引先から届いた一覧など)から番号を再取得する必要があります。
対処: 該当列をあらかじめ「文字列」書式にしておく
指数表記化への対処は、0落ちの対処法と基本的に同じ考え方です。数値を入力する前に、該当する列のセル書式を「文字列」に設定しておくことで、Excelが数値として解釈しなくなり、指数表記への変換自体が起きなくなります。
- JANコード・商品コード・バーコード番号を扱う列は、データを入力・貼り付けする前に列全体を選択し、セルの書式設定で「文字列」を指定しておく
- 既存のCSVファイルを開く場合も、ダブルクリックで直接開くのではなく、Excelの「データ」タブから「テキストまたはCSVから」取り込み、該当列のデータ形式を明示的に「テキスト」に指定して読み込む
- 一度指数表記になってしまった値は、書式を「文字列」や「標準」に戻しても元の桁は戻らない。この場合は復元を試みず、元データから該当箇所を再取得するのが確実
取込前のチェックポイント
CSVを基幹システムに取り込む前に、JANコードやバーコードを含む列を目視で確認しておくと、指数表記化の事故に早く気づけます。
| 確認項目 | チェック内容 |
|---|---|
| セルの表示 | 「E+」を含む表記になっていないか |
| 桁数 | 本来の桁数(JAN-13なら13桁)と一致しているか |
| 列の書式 | データ入力前に「文字列」に設定してあるか |
先頭ゼロの消失(0落ち)を含め、コード列に関する取込前チェックの全体像は基幹システムへのCSV取込でよくあるエラーと対処法のチェックリストにまとめています。
まとめ
- 桁数の多い数値(JANコード・バーコード番号など)をExcelで扱うと、「4.57135E+12」のような指数表記に自動変換されることがある
- 0落ちと違い、指数表記化した状態でCSV保存すると下位の桁が失われ、元の数値には戻せない
- 予防策は、該当列のセル書式をデータ入力前に「文字列」へ設定しておくこと
- すでに指数表記になってしまった値は復元を試みず、元データから再取得する
手前味噌の紹介
この記事を書いているのは、注文書特化サービス注文書係(ちゅうもんしょがかり)の運営者です。FAX・手書きの注文書をアップロードするとAIが下書きを作り、担当者は自信のない項目だけを確認して確定します。転記にかかる時間を1/10程度に圧縮することを狙ったサービスです。
JANコードのような桁数の多いコードも、AIが読み取った時点で文字列として扱われるため、Excelを経由して指数表記に変換されてしまう心配がありません。品目マスタと照合した正式な商品コードのまま、CSVへ出力できます。
無料トライアル(30枚または14日間、クレジットカード登録不要)で、実際にお使いの帳票との相性を確かめてみてください。