- ベストアンサー
VBAでの四捨五入
VBAで下記式「A」を四捨五入(0.97517→0.98)したいのですが、どのようにしたらよいのでしょうか。 式: A = (TextBox1.Text * 10)/TextBox2.Text
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
四捨五入ですね? もうこたえは出ていますが、VBAのRoundは使用上注意が必要です。 Excelのワークシート関数での ROUND は、"算術型" の丸め処理を行います。"算術型" 丸め処理では、丸め対象位置の 5 は常に切り上げられます。 つまり、まさしく四捨五入です。 これに対して VBA での Round は "銀行型" の丸め処理を行います。"銀行型" の丸め処理の場合は 5は、結果が偶数になるように丸められ、切り上げられることも、切り捨てられることもあります。 例:小数第3位までで丸める場合の小数第4位の5の動き 12.1225→12.122 12.1235→12.124 12.1245→12.124 12.1255→12.126 これを防ぐには#3さんがお書きのように、 Application.WorksheetFunction.Roundとして、ワークシート関数でのRoundを指定する必要があります。 (ただし、VBAのRoundでも 12.22500001のように、わずかでも5より大きければ切り上げられます。)
その他の回答 (3)
- Nayuta_X
- ベストアンサー率46% (240/511)
WorksheetFunction.Round(数値,桁数)を使用します。 例; 答え= WorksheetFunction.Round(A, 2) または、 答え= Fix((0.97517 + 0.005) * 100) / 100 と言う方法もあります。 または、 答え= int((0.97517 + 0.005) * 100) / 100 と言う方法もあります。 尚、桁数を指定しない方法は、ないようです。
お礼
ご回答ありがとうございます。 参考にさせていただきます。
- mimikuro
- ベストアンサー率35% (21/59)
回答 A = Round(TextBox1.Text, 2) のようにコーディングしてください。
お礼
ご回答ありがとうございます。 参考にさせていただきます。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★Round という関数があります。 ・Round(0.97517,2) → 0.98 になります。 ・Round(数値(セル),桁数)です。 ・以上。おわり。
お礼
ご回答ありがとうございます。 参考にさせていただきます。
お礼
とても詳しいご回答ありがとうございます。 勉強になりました。