-PR-
解決済み

EXCEL-VBA の round関数

  • 暇なときにでも
  • 質問No.24244
  • 閲覧数3254
  • ありがとう数7
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 96% (32/33)

EXCEL-VBAで
Cells(1, 1) = Round(Cells(3, 3), 0)
として、
C3 に28.5 を入力し、上のマクロを実行すると、
A1には、28と表示されてしまいます。
ワークシート関数の =round(c3,0) を他の適当なセルに入力すると、
その返り値は、29 とちゃんとなります。

c3が 28.5001 とかだと両者ちゃんと 29 となります。

これは、VBA関数のバグなりスペックなのでしょうか?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル11

ベストアンサー率 49% (139/279)

これは、バグではなく、仕様です。
Roundは四捨五入ではなくて、丸めを行うもので、Excelでは、算術型の丸めを、VBでは、銀行型の丸めを行うようになっています。

銀行型の丸めは、0.5は偶数になるようになっています。


元の値 |0.4|0.5|0.6|1.4|1.5|1.6
---------------------------------
算術型 | 0| 1| 1| 1| 2| 2
---------------------------------
銀行型 | 0| 0| 1| 1| 2| 2

ですから、結果は上記のようになります。

四捨五入では、0.1~0.4の四つが切り捨て、
0.5~0.9の5つが切り上げになりますから、
値が大きくなる傾向がありますが、銀行型では
切り上げと切り捨ての交互になるため誤差が
四捨五入より、小さくなることが期待できる
ようになっているのです。

ExcelのVBAでエクセルのシートのRoundと
同じ計算がしたい場合は、

Cells(1,1).Value = Application.Round(Cells(3,3).Value,0)

のように、Roundの前に、Application.を付けて
シートの関数を使うようにするのが簡単だと思います。
お礼コメント
komatta_kun

お礼率 96% (32/33)

ありがとうございます。「丸め」と「四捨五入」、一般人にはどうも同じに思えてしまいます。別の関数にするとかしてほしいですよねぇ。
投稿日時 - 2001-01-04 23:44:50
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1

 スペックだそうです。MicrosoftのKnowledgeBassでもありました。丸めの方法で誤差を無くす為に結果が常に偶数になるようにしているみたいです。ISOかなんかでも認定されている方法らしいです。Excelだけに限らずAccessなどのVBAでも同じです。

 ワークシート上でも同様になるのならしょうがないかなとも思うんですが、なんか納得いかないですよね。
お礼コメント
komatta_kun

お礼率 96% (32/33)

ありがとうございます。そうですよねぇ、なんかまぎらわしいですよねぇ。
投稿日時 - 2001-01-04 23:31:58

  • 回答No.2
レベル13

ベストアンサー率 46% (643/1383)

18.5以外でも、数値の整数部分が偶数であれば、同様の現象が起こるみたいですね。

ヘルプには
-+-+-+-+
機能

指定された小数点位置で丸めた数値を返します。
-+-+-+-+
とあり、四捨五入とは一言も書いていないため、厳密に言えば間違いではないですが、一般常識的観点からすれば、どう見てもバグですよね(笑)。
ちなみに、ワークシート関数のRoundのヘルプには、四捨五入すると書いてありました。

で、解決策としては、四捨五入する版のRound 関数を自作してみてはいかがでしょうか。
方法とかわからなければ、補足していただければ私が作ってもいいです。
お礼コメント
komatta_kun

お礼率 96% (32/33)

ありがとうございます。他の方にいただいたように、「丸め」と「四捨五入」は違うらしいですね。
投稿日時 - 2001-01-04 23:34:24
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ