1

Excelの小数点以下の値が存在するセルから取得して、演算するシナリオを実行していました。

実行結果が想定外の数値になっていたので、確認したところ

数値 0.0420764841764671 をExcel操作(値の取得2)で取得してとき
「4.20764841764671E-02」と、指数表記を変数に格納していました。

16桁以上あったために意図しない値に変化したのは理解できましたが、
これを変換する方法を探しましたが容易には見つからず・・・。

cell.textで取得する対処のほかないでしょうか?

cell.textで取得するとなると、セルの書式設定が標準で、値は数値のほか数式もありの状態なので

取得前に書式設定・列幅設定の編集、取得後は文字列を数値変換するなど配慮が必要になってきて
手間がかかると言う思いが先立って保留にしてしまっています。

ほかに0.0420764841764671のまま取得する方法をご存じでいらっしゃいましたら教えていただけたらと思います。

この質問は解決済みのためクローズされています。
ベストアンサーとして選択しました

思いつきできちんと調べていませんのでコメントで。スクリプト内でROUND関数で必要桁数だけにしてからWinactorに通してみてはいかがでしょうか(ROUND(cell.value, 10)のような感じ)。きちんと関数を書くならhttps://qiita.com/yaju/items/75e39c774bd122190cd2が参考になりそうです。

wakaba様
コメントありがとうございます。
Round関数は以前、偶数丸めの知識を知らずにハマって苦戦したことがあり、ちょっと使用を避けているとこがあります。変換する関数を作ってしまおうという、教えていただいたページとても参考になります。

数式が操作対象に入っているのがすごいネックです。
そこをなんとか変えられないのでしょうか。
回答になってなくて、申し訳ございません。

S.N様
コメントありがとうございます。
そうなんです・・・この数式の時が厄介で。
これが、いろいろあって不可でした。

しかも、該当のExcelファイルは最後に保存しますよね・・・
それがなければ、所定の列を全部コピーして値で上書き貼り付けしてって方法がとれそうかなとか、思うのですが。。。

S.N様
再びコメントありがとうございます。
それをコピー&値のみ貼り付けの作業追加することも考えましたが、
「Excel操作(値の取得2)」のスクリプトを編集することで解決できました。