- ベストアンサー
VBAで文字を削除後、指数に変換
宜しくお願いします。 E列(セルの表示形式=標準で約1000行)に下記のような数値が入っているのですが(p=ピコ1E-12、n=ナノ1E-9、u=マイクロ1E-6)そのE列のp、n、u等を削除してF列にセルの表示形式=指数で小数点以下2桁にコピーしたいのですがVBAで可能でしょうか。 --------------現在---------------- E列 38.000p 8.2360n 2.4778u 空白セル 0.001 --------------VBA後---------------- E列 F列 38.000p 3.80E-11 8.2360n 8.24E-09 2.4778u 2.48E-06 空白セル 空白セル 0.001 1.00E-03
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
数式でもよければ =IF(E2<>"",VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"p","E-12"),"n","E-9"),"u","E-6")),"") これで表示形式を指数にしてください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
拙いVBAでやってみました Sub test01() d = Range("A65536").End(xlUp).Row Worksheets("Sheet2").Activate For i = 1 To d s = Worksheets("Sheet2").Cells(i, "A") If s = "空白セル" Then Else r = Right(s, 1) Select Case r Case "p" Cells(i, "C") = Left(s, Len(s) - 1) * (10 ^ -12) Case "n" Cells(i, "C") = Left(s, Len(s) - 1) * (10 ^ -9) Case "u" Cells(i, "C") = Left(s, Len(s) - 1) * (10 ^ -6) Case Else Cells(i, "C") = s * 1 End Select Cells(i, "C").NumberFormatLocal = "0.00E+00" End If Next i End Sub If s = "空白セル" ThenはIf s = "" Thenが適当かも。 下記 A列 質問データ B列 質問の希望正解 C列 本件VBA結果 A列 B列 C列 38.000p 3.80E-11 3.80E-11 8.2360n 8.24E-09 8.24E-09 2.4778u 2.48E-06 2.48E-06 空白セル 空白セル 0.001 1.00E-03
お礼
imogasiさん回答ありがとう御座いました。 マクロでも問題なく出来ました。 良い勉強になりました、ありがとう御座います。
お礼
mshr1962さん回答ありがとう御座いました。 関数でも出来るのですね、これでグラフを完成する事が出来ました。 今回はお世話になりました。