電子書籍の厳選無料作品が豊富!

大量のデータを処理しなくてはならないのですが、ときどき送られてくるエクセルでデータに使われるEを含んだ記号文字列が数値になり、しかも下記のような表示に化けてしまってます。()内は数値です。

201E2⇒2.01E+04(20100)
803E7⇒8.03E+0.9(8030000000)
903E9⇒9.03E+11(903000000000)

最初から文字列で入れてくれればこんなことにはならないと思うのですが、お客様あってのことなのであまり強くは言えません。やむをえず一つずつ調べてこちらで修正をしています。

これを関数あるいはVBAで一括変換する方法はないでしょうか?

A 回答 (13件中11~13件)

"E"の前が3桁固定でしたら、以下の関数でできました。



=LEFT(TEXT(A1,"0"),3)&"E"&LEN(TEXT(A1,"0"))-3


(Excel2002で検証しました。)
    • good
    • 0
この回答へのお礼

ありがとうございました。

No2の方のと同じ理屈ですね。
勉強になりました。

お礼日時:2005/04/29 09:11

=LEFT(A1,3)&"E"&LEN(""&A1)-3

    • good
    • 0
この回答へのお礼

ええ!?

どうして対数を使わずに指数を変換できちゃうんでしょう!?
驚きです。
式の意味はわかりますが、なんでこれで変換できるのかわかりません。教えていただけますか?

お礼日時:2005/04/28 19:12

> 2.01E+04表示を201E2に変換するのは?



だと、指数部と仮数部を計算して2桁ずらして文字列を作成とか。

A1に2.01E+04が入っているとして、

B1=INT(LOG(A1))-2

で指数部が計算できます。

C1=TEXT(A1/(10^B1),"0")&"E"&B1

で文字列が出来るハズ。
質問の3パターンはOKでした。
    • good
    • 0
この回答へのお礼

ありがとうございます。

出来ますね!
関数で復元できることがわかって一安心です。

あとは毎月のことなんでなんとかVBAで処理を考えます。

お礼日時:2005/04/28 18:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!