四捨五入ではなく、五捨六入になってしまう

Anonymous
2019-07-16T06:17:19+00:00

ROUND関数を使い、小数点第1位で四捨五入したいのですが、計算結果がなぜか五捨六入になってしまいます。

四捨五入する中身の数値は、SUM関数で合計した値です。

SUM関数で合計する範囲は、INDIRECT関数で参照した範囲です。

今回SUM関数で合計したものは、『73.5』という数値なのに、ROUND関数で桁数0を選択した計算結果は『73』になります。

合計する範囲に入っている数値は全て小数点第1位までの数値で、小数点第2位が入っているようなことはありません。

状況の切り分けとして、今回SUM関数で合計している範囲の数値の1つを「0.1」→「0.2」に変更しました。

そうすると、SUM関数での合計は『73.6』になり、ROUND関数の計算結果は『74』になります。

状況を切り分けた結果、四捨五入ではなく、五捨六入になってしまっています。

数値は小数点第1位で四捨五入したいので、どなたかお知恵を貸していただけないでしょうか?

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2019-07-17T04:34:09+00:00

追加の情報をありがとうございます。

Excel2016で頂いた情報のシートを作り検証しましたが、結果は、74 と期待する数値が出ました。

ちなみに、五捨六入と言う事は、=ROUND(A1-0.1,2)  =IFERROR(ROUND(SUM(INDIRECT("貼り付け!G"&C4&":G"&B4))-0.1,0),"")

あと、もう一つ確認ですが、貼り付けシートのG列数値は、数式(関数)での数値ではないでしょうか

貼り付けシートのG列の形式を文字列に変更してどうなるか確認してみてください。

期待する計算が出来た場合は、G列を数値などに戻して小数点以下をExcelの有効桁数15桁まで表示して 

00001 , 99999 が表示されないか確認してください。

もしある場合は、その数値が誤差を生じさせる要因なのでそのセルの数式を工夫して期待の数値を

求められるように変更(関数追加)などを行ってください。

浮動小数点やEXCELの仕様制限などでない場合は、

既に実行済みかもしれませんが、Officeの修復を実行してみてください。

 https://support.office.com/ja-jp/article/office...

また、BOOKの不具合などであれば、新規にBookを作成してデータなどをコピペして同じ現象が発生するか、ご確認ください。

発生いない様であれば、ファイルの修復などの対応も考えられますが、新規ブックに移動(作り直)した方が良いかもしれません。

書き忘れました:INDIRECT関数を使用しない場合は、74 になるのでしょうか?

この回答は役に立ちましたか?

2 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-07-17T05:18:48+00:00

    >貼り付けシートのG列数値は、数式(関数)での数値ではないでしょうか

    →数値が入力されたデータを値の貼り付けで貼り付けているので、数式での数値ではありません。

     貼り付ける前のデータも数式での数値ではありません。

    >INDIRECT関数を使用しない場合は、74 になるのでしょうか?

    →直接同じ範囲を選択しても、『73』になってしまいました。

    お返事を待つ間、私の方でも少し確認したことがあります。

    先程、以下のようにお返事しました。

    >SUM関数の解が 73.50以上の値か確認する為、小数点以下の表示で小数第二位まで表示して確認してください。

    →『73.50』と表示されます。

    しかし、小数点以下の表示を小数点第13位まで表示すると、『73.4999999999999』になりました。

    恐らくこれが原因かと思われます。

    お恥ずかしながら、浮動小数点という存在を初めて知りました。

    小数の計算で誤差が出てしまうことがあるのですね。

    誤差はどうしようもないので、小数点第2位で一度ROUNDしたものを再度ROUNDで整数に四捨五入するように変更するつもりです。

    たくさん考えてお知恵をくださり、ありがとうございました。

    お力添えをいただいたお陰で原因が分かりました。

    本当にありがとうございました。

    この回答は役に立ちましたか?

    2 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2019-07-17T01:25:06+00:00

    Qchan1962様、初めまして。

    返信ありがとうございます。

    >ROUND関数が正しく機能しているかを確認する為、別セルで直接 =ROUND(73.5,0)で

    どのようになりますでしょうか?

    →『74』と返されます。

    >SUM関数の解が 73.50以上の値か確認する為、小数点以下の表示で小数第二位まで表示して確認してください。

    →『73.50』と表示されます。

    【数式】 =IFERROR(ROUND(SUM(INDIRECT("貼り付け!G"&C4&":G"&B4)),0),"")

       上記数式で『73』が返されていたため、

         =SUM(INDIRECT("貼り付け!G"&C4&":G"&B4)) と

         =IFERROR(ROUND(E4,0),"") に分解しましたが、同じく『73』が返されました。

    【数値】「貼り付け」シートのG列には、「0,0.1,0.2,0.3,0.4,0.5」の数値が並んでおります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2019-07-16T15:57:09+00:00

    いしかわ1093様、はじめまして

    >合計する範囲に入っている数値は全て小数点第1位までの数値で、

    >小数点第2位が入っているようなことはありません。

    ROUND関数が正しく機能しているかを確認する為、別セルで直接 =ROUND(73.5,0)で

    どのようになりますでしょうか?

    SUM関数の解が 73.50以上の値か確認する為、小数点以下の表示で小数第二位まで表示して確認してください。

    いずれも、問題がない場合は、実際の数式、参照元数値など示せる範囲でかまいませんので、

    もう少し具体的な情報をお知らせください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません