はじめに
桁数の多いExcel指数表記値を実数にする方法をご紹介します。
結果
piyo列の6行目が指数値から実数値に変わっています。
対応するexcel内の値は赤文字セルです。
同じ値になっています。
処理内容
フロー図は下記です。
赤枠部分について、詳細に説明していきます。
処理内容詳細
inputは下記Excel表です。
・A1セルからデータが始まっていない
・値はExcel表示形式で%になっている実数値
というデータになっています。
上記データをinputツールで読み不要列・行を削除してデータを見ると、
piyo列6行目、9行目が指数表記になっていました。
input形式をcsv等へ変更できれば良いのですが、諸事情で形式が変更できないため、
フロー図赤枠内で、if文とPadRight関数、REGEX_Replace関数を用いて実数にしました。
if Contains([piyo],"E") then
ToNumber(REGEX_Replace([piyo],"[E][-](\d+)","")) /
ToNumber(PadRight([分母],ToNumber(REGEX_Replace([piyo], "(.+[E][-])(\d+)","$2"))+1,"0"))
else ToNumber([piyo])
endif
処理内容としては、
① 指数表記か否かをContain関数で判定
② REGEX_Replace関数で指数部分を消した値を作る
③ 小数点を動かす桁数をREGEX_Replace関数で取得
④ PadRight関数と③で小数点を動かす桁数分の分母を作る
④ ②÷④を計算、数値にする となります。
参考URLによると、
指数はE
以降の符号と数値により、小数点の位置を動かすと元の実数値が作れるとのことでしたので
無理やり小数点の位置を動かしました。
今回はE
以降が負の値のみだったため、小数点を左へ動かす除算処理のみ組み込んでおります。
正の値の場合は乗算ください。
終わりに
パワープレーですが、inputを変更できない場合は参考になれば幸いです。