- ベストアンサー
四捨五入するときの関数は
金額データで、74352を千円未満を四捨五入するときの、データ定義、使用関数を教え願いたい。 (結果は、74000としたい。)
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >百未満の時は、Format(値, "0,")*100 ですか。 No.1の回答は、千円未満限定の四捨五入方法です。 桁数によらない、汎用の式は、 =Format(値/100, "0") * 100 です。 式中の「100」の部分を、四捨五入する桁によって、変更します。
その他の回答 (6)
簡単なベンチマークを作って性能を測定してみました。 予想通り、Int関数の方がFormat関数より約20倍速いという結果でした。 大した差ではないので、気にするほどの問題ではないと思いますが、処理速度を要求される場面では、Int関数の方が無難かもしれません。 Option Explicit Public Sub TestA() Dim sglSt As Single Dim sglEd As Single Dim i As Long Dim curTmp As Currency sglSt = Timer() For i = 1 To 10000000 curTmp = Int((123456 + 5 * 1000 / 10) / 1000) * 1000 Next i sglEd = Timer() Debug.Print sglEd - sglSt End Sub Public Sub TestB() Dim sglSt As Single Dim sglEd As Single Dim i As Long Dim curTmp As Currency sglSt = Timer() For i = 1 To 10000000 curTmp = Format(123456 / 1000, "0") * 1000 Next i sglEd = Timer() Debug.Print sglEd - sglSt End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
INT関数はあらゆる言語にあるでしょう。 Sub test01() k = 3 '千の位の場合の例 c = 10 ^ k a = 74452 b = Int((a + 5 * c / 10) / c) * c '千の位の時は500や万の位の時は5000を足して割って切り捨て、掛けて位を戻す MsgBox b End Sub
- mshr1962
- ベストアンサー率39% (7417/18945)
#1の補足:百未満の時は、Format(値, "0,")*100 ですか。 違います。その場合は Format(値, "0.0,")*100 になります。 0の後の「,」は千単位の区切りです。 汎用性を持たせたいならユーザー関数(カスタムプロシージャ)を作ってください。
- mshr1962
- ベストアンサー率39% (7417/18945)
下記URL参照してください。 【丸めを行うカスタム プロシージャを実装する方法】 http://support.microsoft.com/default.aspx?scid=kb;ja;196652&Product=vbJPN
- asuca
- ベストアンサー率47% (11786/24626)
四捨五入の間酢はなかったように思いますが。 参考URLの方法ではどうでしょう。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Round関数を使用したいところですが、ちゃんと四捨五入してくれないので、以下のような風にします。 =Format(値, "0,")*1000
補足
百未満の時は、Format(値, "0,")*100 ですか。