ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの12桁以上の数字をそのまま表示するには?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
エクセルで桁数の多い数字データを開いたときに、
自動的に変な数字に変換されてしまい、困っています。


例えば、「20510181306001」といった数値は
セル上で「2.05102E+13」のようになってしまいます。
(データの中身自体は元の数値のまま)


このままではCSVやテキストで保存するときに
変換された文字列で保存されてしまいます。


こういったエクセル独自の変換機能をデフォルトで
OFFにする方法はないのでしょうか。
そしてそして、何でこのような表示になってしまうのでしょうか。
(何か数学的な表記方法なのでしょうか?)


ネットで検索したり、[ツール]→[オプション]の中を
良く見てみましたが、解決方法が見つかりませんでした。
ご存知の方がいましたら、ぜひ知恵をお貸しください。
よろしくお願いいたします。


※あらかじめエクセルを起動させておき、
[ファイル]→[開く]からデータの形式を「文字列」に
指定することによって防ぐことができますが、
そういった過程を踏むことなくできないかな、と思っています。

コメント(19)

デフォルトでもなく、すごく良い方法というのも疑問ですが…

全選択をして(列番号Aと行番号1の間のグレーのところ)
右クリック→セルの書式設定→表示形式→数値

ではダメですか??
ほんの思いつきですがf(^^;) ポリポリ
追加です♪

私は数学的な考えが大変苦手なので、上手に説明できないのですが、Excel 指数表記というキーワードで検索してみてください。
簡単に言うと○○の何乗という考え方です。

もっと、上手な方補足説明お願いします!!
うーん。普通の表記方法なんですけどね。
1e3 = 1000
1e−3=0.001
1×10の3乗、1×10の−3乗という意味です。

=10^3     と入れると1000
=10^-3     と入れると0.001
これを逆に見ると、
=log10( 1000) と入れると 3
=log10(0.001) と入れると−3

指数表記は、関数電卓なら、普通に見れるものです。
慣れないと嫌なものだとは思いますが・・・。
デフォルトが変えられるかどうかは知りませんが
マクロというかVBAで
ユーザー設定ボタンに
Sub Macro1()
Cells.Select
Selection.NumberFormatLocal = "0_ "
Selection.Columns.AutoFit
End Sub
なんてのを登録すればボタン一つで何とかなりそう。

もともとE表示(指数表示)は列幅が足り無くて
###############
なんてことになるのを防いでるんでしょうから
デフォルトとしてはしょうがないかも。
バージョンが分からないので、
多少、操作が異なる可能性があります。

「書式」→「スタイル」へ移動
「標準/G」を「数値」に変更。

特定のセルや列、行を制御するなら、もう少し弄る必要や
マクロを使用する必要があるとおもいますが、
基本的な操作で良いのなら、これで出来ると思います。

あと個人的な意見ですが元々、数値であったものを
文字列に変換して使用する事はマクロ等で制御する時に
トラブルの元になるので事前に文字列に変換した事を
周知させておくか、そのまま数値で利用する事をお勧めします。
セルの書式設定で、「###,###,###,##0」とするのは駄目なんですか?
お返事ありがとうございます。
冗談抜きで指数表記というものを知りませんでした…。


私はとある販売サイトで注文データの管理しています。
うろこさんがおっしゃるように、毎日の売上情報を
専用のCGIを使ってCSVファイルで書き出しています。


注文内容の変更や、ちょっとした誤字脱字を修正する際、
テキストエディタなどで開くよりも、エクセルでぱっと
開けたほうが作業しやすいので今回のようなことが
できないかなと思いました。
(「20510181306001」といったやたらと長い数値は注文番号なのです)


どうやらデフォルトで変更することはできないようですので、
えぷろんくまさんやかえるちゃんさんに教えていただいた方法で
やろうかと思います。どうもありがとうございました!


そこでそこで、申し訳ないのですがもう1つ質問しても
よろしいでしょうか?


数値の部分は「右クリック」→「セルの書式設定」→「表示形式」→「数値」で
指数表記になっている部分も数値に戻せましたが、
戻らない値が2種類あります。


電話番号の「03」の部分は表示形式を数値にしても「3」になってしまい、
ゼロがなくなってしまいます。


また「3-2」のような、住所の番地だけのセルは開いた状態で
「3月2日」といった日付になっていますが、数値に戻すと
「38778」と不可解な数値になってしまいます。


こういった値をファイルをオープンした状態から戻す方法はないでしょうか?
引き続きで申し訳ないですが、アドバイスをいただけたら嬉しいです。
よろしくお願いいたします!(あと、長くなってすみません)


※そういった値には最初に「'」をつけるよう指示がありましたが、
既に値が入った状態で付けてもそのまま文字列になるだけでした。


>えぷろんくまさん
良い方法を教えてくださり、ありがとうございました。
「Excel 指数表記」で検索して出てきたマイクロソフトの
ページで少し理解が深まりました。

>かえるくんさん
アドバイス、ありがとうございます。そうさせていただきます。

>ぶちょ〜さん
指数について教えていただき、ありがとうございます。
上半分は何とか、理解できました。普通の表記方法なのですね。
関数電卓は触ったこともありません…(>_<)

>ピアノちゃんさん
アドバイスありがとうございます。その方法でやらせていただきます。

>うろこさん
状況を理解していただけて嬉しいです。できればエクセルで
作業したいと思って質問させていただきました。
皆さんのアドバイスとおり、オープン後に書式を変更して対応しようと
思います。ありがとうございました。

>るみんさん
マクロですか。自分で制御できないものを使うのは
ちょっと怖い気もしますが、一度試してみようと思います。
考えていただき、ありがとうございました。
CSVデータの拡張子を「.txt」に変更し、取り込む際に
注文番号の項目を「文字列」にて取り込みましょう。
>戻らない値が2種類あります。
>電話番号の「03」の部分は表示形式を数値にしても「3」になってしまい、ゼロがなくなってしまいます。
>また「3-2」のような、住所の番地だけのセルは開いた状態で
「3月2日」といった日付になっていますが、数値に戻すと「38778」と不可解な数値になってしまいます。
>こういった値をファイルをオープンした状態から戻す方法はないでしょうか?

日付の方は不可解な数値ではなくて1900年1月1日からの通し番号です。つまりあくまでも日付として読み込まれてるということですね。

電話番号の方は文字列として読み込むか表示形式で固定するか、でなきゃ関数で無理矢理戻すか。。。

どうやら仕事の性質からすると、MILANO さんの仰るようにExcel側から開く際に指定するのが良さそうですね。
Excelのバージョンにもよるでしょうが、拡張子CSVのままでも「データ」→「外部データの取り込み」→「テキストファイルのインポート」で「すべてのファイル」を表示させるとCSVファイルを文字列か日付か標準かを指定して取り込めます。

CGIをいじれるなら最初から市外局番を別項目にしてしまう方が簡単ですが。
そういえば最初の趣旨が
---------------------------------------------
※あらかじめエクセルを起動させておき、
[ファイル]→[開く]からデータの形式を「文字列」に
指定することによって防ぐことができますが、
そういった過程を踏むことなくできないかな、と思っています。
---------------------------------------------
でしたね。

Excelで集計するのでなく編集するだけなら
CSVファイルの編集に特化したフリーソフトも有りますから
http://hp.vector.co.jp/authors/VA015850/
(この頁の、椿ListEditorです)
いっそファイルの関連付けを変えてしまって、そちらで開くようにすれば簡単かも知れません。

どうしてもExcelで、となるとVBAでファイルOPEN時に働くようなアプリを組む必要が有ると思います。理屈は単純ですがエラー回避がデータの状況によって微妙になりますから結構難しいかも。
引き続きのアドバイス、ありがとうございます。
おとなしく、「ファイル」→「開く」からデータの形式を
指定することにします。皆さんのおっしゃるとおり、
それが一番無難なようですね。お手数をかけました。


また、生データ側を問題がおきづらい形式に変更することにしました。
電話番号は「03」「1234」「5678」と3つに分けるのではなく、
「03-1234-5678」と1つのデータにすれば先頭のゼロは消えませんし、
注文番号も「12345678901234」ではなく「A12345678901234」のように
アルファベットを含めれば指数表記されないようです。


あと、住所の番地が日付に変換されるルールがわかりました。
同じように困っている方のために下に整理しておきます。

------------------------------------------------------------
2〜3つのハイフンで区切った文字は日付と解釈される。
例>6-3-31 → 2006/3/31

ありえない日付なら同様の形式でも日付と解釈されない。
例>6-3-32 → 6-3-32 ※3月32日は存在しないので文字列のまま

全角マイナスは日付と解釈される。
例>6−3−31 → 2006/3/31

全角ハイフンは日付と解釈されない。
例>6‐3‐31 → 6‐3‐31

※全角で数値を入力しているときにハイフンを入力すると
全角マイナスで入力されているようです。
私はIMEしか使っていないのでATOKやことえりでも
同様の現象になるのかは不明です。
------------------------------------------------------------


以上となります。アドバイスをくれたみなさん、
親切に教えてくださって、本当にありがとうございました。


>アルさん
「書式」→「スタイル」といった方法もあるのですね。
アドバイス通り、数値は無理に文字列にしないよう
気をつけたいと思います。ありがとうございました。

>Qanqiさん
カンマが入るとコンピューター処理する時に
エラーになってしまうようです。
アドバイス、ありがとうございました!

>MILANOさん
結局、その方法が一番、無難なようですね。
ありがとうございました。

>うろこさん
やっぱり、その方法しかないようですね。
再度のアドバイス、ありがとうございました。

>るみんさん
日付の数値はそういう意味があったんですね。
CSVファイルのままでも形式を指定してデータを取り込めるとは
知りませんでした。ぜひ活用させていただきます。
椿ListEditorの紹介もありがとうございます。
ダウンロードしてちょっと使ってみましたが、
数値を指数表記しないのですね!場面によって使い分けてみます。
何度もありがとうございました。

>ぼにさん
アドバイス、ありがとうございました。
さっそくマクロ、試してみました。
教えていただいた方法だと簡単にマクロの登録ができました。
ただ、エクセルを一度終了してしまうと消えてしまいますが、
何か保存しておく方法はあるのでしょうか?
ずっと同じファイルを使っているのではなく、
毎日、新しく抽出されたCSVファイルを利用しています。
>ぼにさん
エクセルを閉じるときに「個人用マクロブックの保存」をしていませんでした…。初歩的なミスで申し訳ないです。ちゃんと保存すると、次回から記録したマクロを利用できるようになりました。詳細な解説をありがとうございました!

ログインすると、残り7件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。