
No.8ベストアンサー
- 回答日時:
こんにちは。
通常、偶数丸め(銀行型丸め)というと思いますが、ExcelのVBAでは、偶数丸めというのは、Excel2000 から採用されましたので、歴史的にも浅いです。いわゆる、2進の計算で、浮動小数点誤差丸めに、正式な名称「最近接偶数丸め」として出てくるだけで、実務上でワークシートなどで使う場を知りません。統計には出てくるそうですが、なぜ、銀行型丸め(Banker's Rounding)というのか、そういう歴史的な背景を私は知りません。
ご質問者さんが、どういう状況で必要になるのか少し興味を持ちました。以前にもそのような質問に出会ったことがありました。
現実的な対応は、VBAのユーザー定義関数を使うにしても、原理は、以下のようになるはずです。以下の数式を見れば分かるとおり、
丸める桁が、奇数の場合、その下の桁の数字を四捨五入、偶数の場合は、下の桁が上の桁の半分よりも小さい場合は切り捨てになりますね。
=IF(MOD(INT(MOD(ABS(A1),10)),2),
SIGN(A1)*ROUND(ABS(A1),0),
SIGN(A1)*ROUND(ROUNDDOWN(ABS(A1),0)+(ABS(A1)>(ROUNDDOWN(ABS(A1),0)+0.5))*0.5,0))
小数点第一位の場合は、
=IF(MOD(INT(MOD(ABS(A1)*10,10)),2),
SIGN(A1)*ROUND(ABS(A1),1),
SIGN(A1)*ROUND(ROUNDDOWN(ABS(A1),1)+(ABS(A1)>(ROUNDDOWN(ABS(A1),1)+0.05))*0.05,1))
少し、数式は、ややこしいですが、理屈は、単純なことだ思います。
質問者さんが、銀行型丸めを要求している話で、既存のVBAのRound関数をそのまま使う分には、出された結果がそのとおりだと思います。
>少数桁が大量にあった場合(?)は、どのように設定すればよろしいでしょうか。
>このVBAをしようした場合の有効桁は2ケタということになりますでしょうか。
そのままの計算でしたら、有効桁数は関係ないのではありませんか?
つまり、浮動小数点の無限小数が存在していても、判定が、その半分よりも大きい・小さいには、有効桁数はありませんね。
>たとえば、2.501だった場合は「2」にはならず「3」になるということでしょうか。
私が説明してよければ、こういうことになると思います。
1桁で丸める場合は、1桁が偶数2だから、その下の桁の数値0.501が、丸める桁の半分0.5よりも多いので、四捨五入されて、3になります。2.5でしたら、半分[よりも]大きくない(以上ではなくて)ので、切捨てになるという仕組みだと思います。だから、Excelの仕様の小数点第16位以降は別としても、基本的には有効桁数は関係ありませんね。
ただ、私は実際には出会ったことのない計算です。
No.7
- 回答日時:
No.5です。
> このVBAをしようした場合の有効桁は2ケタということになりますでしょうか。
2桁というか、五捨五入はNo.3の方に補足にあなたも書かれているように、
「丸め単位の丁度まんなかで、どっちつかずの場合は、偶数側を採用する」
なので、2.5なら丁度まんなかですが、2.51にした時点で真ん中にならなくなります。なので3になってしまいます。
2.51…(あとも続く)を2に丸めたいときは、いったん小数点以下第2位で切り捨てを行い、それを五捨五入するという方法があります。
=Round5(ROUNDDOWN(2.51,1),0)
とすると、2.51がいったん2.5に丸められ、それが五捨五入されて2という結果になります。
No.6
- 回答日時:
銀行型丸め と言われているものです。
こちらの解説が詳しいです。
丸めを行うカスタム プロシージャを実装する方法
http://support.microsoft.com/default.aspx?scid=k …
No.5
- 回答日時:
本当ですね、VBAのRound関数は五捨五入ですね。
私もはじめて知りました。これを利用したユーザ定義関数です。
Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。
Function Round5(N As Double, Optional e As Integer) As Double
Round5 = Round(N, e)
End Function
貼り付けたらVBAの画面は閉じてかまいません。
使い方はワークシート関数のROUNDと同じです。
シート上で、
=Round5(2.5) とすると2に、
=Round5(3.5) とすると4に、
=Round5(0.25,1) とすると0.2に
=Round5(0.35,1) とすると0.4にそれぞれなります。
この回答への補足
貴重な回答をありがとうございます。
ご質問なのですが、このVBAをしようした場合の有効桁は2ケタということになりますでしょうか。たとえば、2.501だった場合は「2」にはならず「3」になるということでしょうか。
少数桁が大量にあった場合(?)は、どのように設定すればよろしいでしょうか。
No.3
- 回答日時:
五捨五入ということですが 5はどう処理されるのでしょうか?
ちなみにROUND関数は四捨五入です。
ユーザー定義を使用しなくても、通常の関数として用意されています。
http://allabout.co.jp/study/pcbasic/closeup/CU20 …
表示形式だけを変更して、データは変えずに見た目だけを
小数点以下四捨五入も可能です。
http://www.relief.jp/itnote/archives/000432.php
この回答への補足
「偶数丸め」は四捨五入とほぼ同一ですが、次の1点が違います。
「丸め単位の丁度まんなかで、どっちつかずの場合は、偶数側を採用する」
したがって、1.25 を 0.01 の位で丸めると 1.2 になり、1.35 は 1.4 になり
ます。

No.2
- 回答日時:
詳細が分からないので簡単なサンプルです。
小数点以下2桁を1桁に五捨五入します。
エラー処理等はしていません。
Function Round55(Rng As Range) As Double
Dim myR As Double
myR = Rng.Value
Round55 = Round(Rng, 1)
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでround関数を使わないで四捨五入する方法 10 2022/08/12 15:43
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- Excel(エクセル) Excelで、少数第二位で四捨五入というのは、 =ROUND(B2:B34 , 1) ということです 3 2022/11/13 15:39
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- Excel(エクセル) Excelで、少数第二位で四捨五入というのは、 =ROUND(B2:B34 , 1) ということです 3 2022/11/13 14:40
- Excel(エクセル) 計算結果を1の位で四捨五入 1 2022/11/12 17:33
- Excel(エクセル) Excelエクセルで四捨五入したい 2 2022/09/11 10:20
- 数学 数学『データの分析』 √22を少数にする際 「4.6904…」だったので 4を四捨五入し0を切り捨て 5 2023/03/03 12:59
- 小学校 がい数の問題の文章の意味 4 2022/11/21 14:25
- 統計学 母集団分布を平均 μ, 分散 σ2 の正規分布と想定し, 母集団から無作為抽出した標本のデータ(標本 4 2023/01/30 20:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
7で始まる電話番号?
-
エクセル:6E-05という表現は?
-
数字3桁の組み合わせの何通り...
-
√2の値はなぜ1.414…になるんで...
-
数学の階乗はどんな時に使うの...
-
3分の1とは何パーセントでしょ...
-
数値とアルファベットに分ける...
-
0.120は有効数字何桁ですか? ...
-
Excelで数値の丸め
-
100!
-
たまに 『2.3×10³』みたいな書...
-
アナログの電力量計を見たとき ...
-
計算をして有効数字2桁で答えな...
-
次のような関数が作りたく、ど...
-
有効数字
-
3÷7のあまりは「3」ですか?
-
7で割ると3余り、9で割ると4余...
-
平均値の桁数に関して
-
小数と分数を2進数に直すやり方...
-
配列128桁の加算、減算につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:6E-05という表現は?
-
7で始まる電話番号?
-
数値とアルファベットに分ける...
-
数字3桁の組み合わせの何通り...
-
2進数の割り算が分かりません...
-
3÷7のあまりは「3」ですか?
-
数学の階乗はどんな時に使うの...
-
NUMBER(N,M) としたときの、格...
-
EXCELで10万未満切捨ての...
-
大雪で小屋根の軒桁が外れた
-
3分の1とは何パーセントでしょ...
-
電話番号のハイフンの入れ方
-
エクセル関数で桁数指定し数値...
-
関数電卓の表示方法を変更したい
-
Excelで数値の丸め
-
エクセルのsumifの検索値
-
好きな数字が並ぶ不思議?
-
【場合の数】 2桁の自然数で、2...
-
0以下の数字は何桁?
-
60進法と10進法
おすすめ情報