3

以前の質問のように、値の大きなクラスター内の特定の値に最も近い一致を返すためのアプリケーションがあり、VBA ソリューションを選択しました。上記のアプリケーションを使用しているときに、値 0.5 の結果が正しくないことに気付きました。ワークシートのラウンド関数は 1 を返しますが、整数に丸められた 0.5 に対して 0 を返すことがわかった VBA ラウンド関数を使用していました。奇妙なことに、VBA ラウンド関数は 1.5 に対して 2 を返します。VBA の代わりにワークシート関数を使用する必要がありました。

何か不足していますか?

4

1 に答える 1

3

これは既知の問題です。VBA の Round() 関数は Banker の丸めを使用しますが、スプレッドシートのセル関数は算術丸めを使用します。ここで詳細を確認してください:

PRB: VBA 6 と Excel スプレッドシートで異なる丸め関数

Microsoft が提案する回避策は、目的の結果を得るカスタム関数を作成することです。

Banker の丸めは、常に 0.5 を最も近い偶数に丸めるという会計処理の標準です。これが、Excel がそのように動作する理由です。算術丸めは、0.5 を次の数値に丸めます。

于 2008-11-05T17:26:21.780 に答える