ここから本文です

EXCELでのJIS丸めの仕方について教えてください。 少数第4桁で終わっている場合...

sno********さん

2010/11/2022:23:33

EXCELでのJIS丸めの仕方について教えてください。
少数第4桁で終わっている場合のみJIS丸めを行いたいです。

111.1125→111.112
111.1115→111.112
111.11251→111.113
111.11269→111.113
というように表す事のできる計算式を教えて下さい。
よろしくお願い致します。

補足VBAの作り方も教えて頂けると助かります。
初心者なので作り方がわかりません。。。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
631
回答数:
3

違反報告

ベストアンサーに選ばれた回答

iru********さん

2010/11/2022:46:34

これは難問ですねぇ。
EXCELの数値は Double(倍精度浮動小数点数型)ですので、小数点以下の値には誤差が付随します。
ですから、小数第4桁で終わってる場合というのはほとんどありません。
入力した通りに記憶されているようには見えますが、これは表示するときに丸めた結果が同じというだけのことです。
計算結果なら、ほとんどの場合予想以上の誤差が付随します。
一旦十進数形式に変換した上で小数第4桁で終わっていることを判定する必要があります。
VBAの丸め関数ならJIS丸めですので、それをワークシートで使えるようにユーザー定義関数を作るのが確実です。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

ko_********さん

2010/11/2112:57:50

以下の資料を参照して、「銀行型丸め(BRound)」をユーザー定義関数で組み込んでおくのが前提ですが。

「丸めを行うカスタム プロシージャを実装する方法」
http://support.microsoft.com/kb/196652/ja

小数点以下6桁目以降が存在しないという条件で、5桁目が0であるかどうかで判別すると……

=IF(RIGHT(INT(A1*100000),1)="0",BROUND(A1;3),ROUND(A1,3))

chi********さん

2010/11/2100:08:19

=ROUND(A1-IF(AND(MOD(A1*10^4,1)=0,MOD(INT(A1*10^3),2)=0),10^-4),3)

とすればいいと思いますが もしその値が計算結果だった場合は
別に演算誤差対策をしておく必要があります。

その場合は「A1」の部分を「TEXT(A1,"標準")」に変更。

いずれにせよ 検証はして下さい。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる