2016/1/26追記:
昔書いた記事ですが、今だにアクセスのあることに気づきました。マクロでもっと簡単にやる方法を現在のブログに書いてますのでリンクを貼っておきます。


こちらだと複数列をまとめて直すこともできます。



Excelでファイルを開くと数値が「x.xxE+12」みたいに指数表示にされてしまうときがある。
なんかのシステムから吐き出されたテキストファイルとか。
表示するのに列幅が足りないだけという場合もあるが、図の例では列幅を広げても解決しない。

イメージ 1
これはExcelの仕様によるもの。ちゃんとそうなるときのルールがある。
セルの数値が指数表示になる条件(サポート技術情報)
・・・って12桁?例えばJANコードは13桁なんですけど。

これをExcelが文字列として認識してくれればこんな問題は起きないが、自動では数値として認識してしまう。
使えねーヤツ。
と言ってもあくまで表示が「x.xxE+12」みたいにされているだけで、値としては保持されている。

イメージ 2
なので、とりあえずセルの書式設定で「文字列」にしてみる。

イメージ 3
書式設定を変えただけだと指数の表示がそのまま。なんでって、仕様なんでしょう。
いったん編集状態にしてから確定してやれば指数の表示は解除される。

イメージ 4
または、単にセルの中身の先頭に「'」(アポストロフィー)をつけても文字列になる。
数字を文字として入力する方法(サポート技術情報)

イメージ 5
でも何十行も何百行も指数表示があるときも、ひとつひとつ上のような操作で直すのか?
先日もそういうケースに遭遇して、みんなに分かりやすいシンプルな解決方法が必要になった。

要は、その列全体を文字列としてExcelに認識させればいい。
TXT形式のファイルを開くときだったら「テキストファイルウィザード」でデータ形式の指定があるよな・・・と言えば、お分かりかもしれない。

指数表示になっている列全体を選択して、メニューの「区切り位置」を実行する。

イメージ 6
「区切り位置指定ウィザード」が開く。

イメージ 7
「次へ」を2回クリックして最後の画面まで進む。
右上の「列のデータ形式」で「文字列」を選択して完了する。

イメージ 8
これで解決する。列全体が文字列として認識され、指数表示が解除されている。
(ちゃんと表示されてなかったら列幅が足りないだけ。広げてあげましょう。)

イメージ 9
ひとつ気をつけたいのは、ExcelファイルではなくCSVファイルで扱う場合。
CSVファイルはデフォルトだとExcelに関連付けられている。
なので、ダブルクリックすればあたかもExcelファイルであるかのように開いてしまう。
実際、周りでそう勘違いしている人も多い。

だがCSVはただのテキストファイルであって書式は保存されない。
なので開くたびに指数表示を解除してやるしかない。
恐ろしいのは、指数表示を解除しないままExcel上でファイルを保存した場合。
指数なのが原因でExcelはご丁寧にも数値を丸めてしまうのだ。

イメージ 10
アフォよのう。
でもなんかのシステムとデータをやり取りするときには、CSVなことも多いので要注意です。