- ベストアンサー
エクセルで2.01E+04表示を201E2に変換するのは?
大量のデータを処理しなくてはならないのですが、ときどき送られてくるエクセルでデータに使われるEを含んだ記号文字列が数値になり、しかも下記のような表示に化けてしまってます。()内は数値です。 201E2⇒2.01E+04(20100) 803E7⇒8.03E+0.9(8030000000) 903E9⇒9.03E+11(903000000000) 最初から文字列で入れてくれればこんなことにはならないと思うのですが、お客様あってのことなのであまり強くは言えません。やむをえず一つずつ調べてこちらで修正をしています。 これを関数あるいはVBAで一括変換する方法はないでしょうか?
- みんなの回答 (13)
- 専門家の回答
質問者が選んだベストアンサー
>=LEFT(A1,3)&"E"&LEN(""&A1)-3 >式の意味はわかりますが、なんでこれで変換できるのかわかりません。教えていただけますか? 指数表示になっていても、(内部的には?)質問文のカッコの中の数字になっているので、 20100 8030000000 の様になっていると考えられます。 もともとのフォーマットから数値として有効なのは最初の3桁だけなので、 LEFT(A1,3)で文字列と見立てて最初の3文字を取り出せます。 あとは、付けられた0の数を数えれば良いのですが、 201E2→20100の様に、数値の部分以外は0ですから、 全体の文字数から3文字を引けば、付けられた0の数が分かります。
その他の回答 (12)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
=LEFT(A1,3)&"E"&LEN(""&A1)-3
お礼
ええ!? どうして対数を使わずに指数を変換できちゃうんでしょう!? 驚きです。 式の意味はわかりますが、なんでこれで変換できるのかわかりません。教えていただけますか?
- neKo_deux
- ベストアンサー率44% (5541/12319)
> 2.01E+04表示を201E2に変換するのは? だと、指数部と仮数部を計算して2桁ずらして文字列を作成とか。 A1に2.01E+04が入っているとして、 B1=INT(LOG(A1))-2 で指数部が計算できます。 C1=TEXT(A1/(10^B1),"0")&"E"&B1 で文字列が出来るハズ。 質問の3パターンはOKでした。
お礼
ありがとうございます。 出来ますね! 関数で復元できることがわかって一安心です。 あとは毎月のことなんでなんとかVBAで処理を考えます。
- 1
- 2
お礼
なるほど、ありがとうございました。